假设我想为范围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。
对此有何解决方案?
答案 0 :(得分:1)
我不确定您是否正在寻找以下解决方案。如果是,您可以使用我的earlier帖子中的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
注意:虽然这些看起来像是重复间隔,但事实并非如此。例如,对于第一行,这意味着所有数据&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