如何在数据帧中包含某个数据的间隔

时间:2018-01-11 12:11:44

标签: r dataframe intervals

x<-rnorm(100)
u<-runif(100)
t1<-(1/0.0105)*log(1-((0.0105/(exp(-8+0.03*x)))*(log(1-u))))
c<-rexp(100,1/1515)
delta<-1*(t1>c)
datinterval<-data.frame(t1[delta==1],c[delta==1],delta[delta==1])
datinterval$interval <- cut(datinterval$t1, breaks=seq(0, 500, 100))

这是获取delta = 1的数据间隔的r代码。我想使用以下代码将其插入到具有完整数据的数据框中:

x<-rnorm(100)
u<-runif(100)
t1<-(1/0.0105)*log(1-((0.0105/(exp(-8+0.03*x)))*(log(1-u))))
c<-rexp(100,1/1515)
delta<-1*(t1>c)
delta
dat=data.frame(t1,c,delta)
dat$Interval[delta==1]<-cut(dat$t[delta==1], breaks=seq(0, 500, 100))

代码不显示间隔,只显示1,2,3,4 ...

the interval part correctly shows the interval

but the interval part shows only 1,2,3,4...

1 个答案:

答案 0 :(得分:0)

新的区间变量仅显示1,2,3,4的原因是

class(cut(dat$t1[delta==1], breaks=seq(0, 500, 100)))
[1] "factor"

您需要做的就是将代码的最后一行更改为

dat$Interval[delta==1] <- as.character(cut(dat$t1[delta==1], breaks=seq(0, 500, 100)))

我不确定为什么第一段代码有效。我会把它留给SO的其他成员来回答。我也很想知道。

PS:代码的第二部分末尾有一个拼写错误。它应该是dat$t1,而不是dat$t