假设我想生成范围为 1 到 10 的 bin
round(seq(1,20,length.out=5))
输出是
1 6 10 15 20
我想形成一个 data.frame 作为
[,1] [,2]
[1,] 1 6
[2,] 7 10
[3,] 11 15
[4,] 16 20
所以开始将是 1,7,11,16,结束分别是 6,10,15,20。
有什么解决办法吗?
假设我想生成范围为 1 到 10 的 bin
round(seq(1,20,length.out=5))
输出是
1 6 10 15 20
我想形成一个 data.frame 作为
[,1] [,2]
[1,] 1 6
[2,] 7 10
[3,] 11 15
[4,] 16 20
所以开始将是 1,7,11,16,结束分别是 6,10,15,20。
有什么解决办法吗?
我不确定您是否正在寻找以下解决方案。如果你是,你可以像我之前的帖子一样使用cut
和运行:sub
mydata<-round(seq(1,20,length.out=5))
mydata<-as.data.frame(mydata)
names(mydata)<-"V" #name the column as V
mydata$V1<-cut(mydata$V,5) #break the data into five intervals and name that as col V1
mydata$lower<-with(mydata,as.numeric( sub("\\((.+),.*", "\\1", V1))) #extract lower value
mydata$upper<-with(mydata,as.numeric( sub("[^,]*,([^]]*)\\]", "\\1",V1))) # extract upper value
myfinaldata<-mydata[,c("lower","upper")] #create data frame of lower and upper values
> myfinaldata
lower upper
1 0.981 4.79
2 4.790 8.60
3 8.600 12.40
4 12.400 16.20
5 16.200 20.00
注意:虽然这些看起来像重叠间隔,但它们不是。例如,对于第一行,这意味着所有数据>=0.981 但 <4.79,而对于第二行,这是 >=4.79 和 <8.60。
x = round(seq(1,20,length.out=5))
df = data.frame(a = c(x[1], head(x[-1],-1) + 1), b = x[-1])
df
# a b
#1 1 6
#2 7 10
#3 11 15
#4 16 20