bin范围并使用边界形成数据帧。

时间:2013-08-09 13:11:58

标签: r

假设我想为范围1到10

生成容器
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。

对此有何解决方案?

2 个答案:

答案 0 :(得分:1)

我不确定您是否正在寻找以下解决方案。如果是,您可以使用我的earlier帖子中的cutsub功能:

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

注意:虽然这些看起来像是重复间隔,但事实并非如此。例如,对于第一行,这意味着所有数据&gt; = 0.981但是&lt; 4.79,对于第二行,这是&gt; = 4.79且<8.60。

答案 1 :(得分:1)

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