我的数据集“d”具有包含1 - 9的变量Hist和一个奇怪的“#I / T”值。我认为“#I / T”已从Excel导入。
但是,我想重写d $ Hist,所以它只保留1到9之间的值。但我无法弄明白。我试过了:
d $ Hist< - d $ Hist [1:9]
或
d< - subset(data = d,d $ Hist [1:9])
希望你能帮助我:)。
此致 下进行。
答案 0 :(得分:1)
你的意思是这样的
d$Hist <- as.numeric( gsub("[^1-9]*","",d$Hist) )
例如
as.numeric(gsub("[^1-9]*","","$#I/T7"))
返回7号。
答案 1 :(得分:0)
以下是两种不同的方式来做你想要的。我相信我更喜欢第二种,我觉得它更安全。这是因为当谈到班级factor
的对象时,你永远不会知道
首先,编制一些数据。
set.seed(9486) # make it reproducible
d <- data.frame(Hist = sample(c("#I/T", 1:9), 20, TRUE), X = rnorm(20))
d$Hist
d2 <- subset(d, Hist %in% 1:9)
d3 <- subset(d, as.character(Hist) %in% as.character(1:9))
identical(d2, d3)
#[1] TRUE
如您所见,结果相同。
注意:在您的代码中subset(data=d, d$Hist ...)
。当您使用subset
时,您不需要重复数据框的名称d$Hist
,只需Hist
即可。
答案 2 :(得分:0)
所以我做了这个(删除了&#34;#I / T&#34;从&#34; d&#34;到&#34; d2&#34;)
d2 <- subset(d, Hist %in% 1:9)
然而,我运行了这样的分析(相对生存):
model.hist <- rstrans(Surv(time, cens)~as.factor(d2$Hist)+ratetable(year = year,
age = age, sex = sex), ratetable = poptab)
summary(model.hist)
分析表明:
coef exp(coef) se(coef) z Pr(>|z|)
as.factor(d2$Hist) NA NA 0.00000 NA NA
as.factor(d2$Hist)#I/T NA NA 0.00000 NA NA
as.factor(d2$Hist)10 NA NA 0.00000 NA NA
as.factor(d2$Hist)2 0.32796 1.38814 0.06651 4.931 8.19e-07 ***
as.factor(d2$Hist)3 1.66204 5.27007 0.31904 5.210 1.89e-07 ***
as.factor(d2$Hist)4 2.29242 9.89889 0.06819 33.618 < 2e-16 ***
as.factor(d2$Hist)5 0.72273 2.06004 0.08140 8.878 < 2e-16 ***
as.factor(d2$Hist)6 1.56012 4.75939 0.16974 9.191 < 2e-16 ***
as.factor(d2$Hist)8 0.12813 1.13670 0.11248 1.139 0.255
as.factor(d2$Hist)9 1.36726 3.92458 0.10316 13.254 < 2e-16 ***
无法弄清楚原因