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 ...
答案 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
。