use*_*755 15 for-loop if-statement r
我有这样的数据帧:
id adit diag1 diag2
2 3 4230 2234
3 5 3345 4456
4 6 4567 4467
Run Code Online (Sandbox Code Playgroud)
我想添加其他2列,dse1并dse2使用下面的伪代码:
if diag1 contains 4230 then dse1 = 1 else dse1 = 0
if diag2 contains 4567 then dse2 =1 else dse2 = 0
Run Code Online (Sandbox Code Playgroud)
我用过这个:
for (i in 1 : nrow(dse)){
for (j in 3: ncol(dse)){
if dse[i,j] %in% ("4320"){dse$dse1 = 1}
else{dse$dse1 = 0}
if dse[i,j] %in% ("4567"){dse$dse2 = 1}
else{dse$dse2 = 0}
}
}
Run Code Online (Sandbox Code Playgroud)
但这些都行不通.
Pau*_*tra 24
ifelse例如,不需要使用循环,只需使用
dse = within(dse, {
dse1 = ifelse(diag1 == 4230, 1, 0)
dse2 = ifelse(diag2 == 4567, 1, 0)
})
Run Code Online (Sandbox Code Playgroud)
Tyl*_*ker 13
不要使用if/else.去矢量化,如:
dat$dse1 <- as.numeric(dat$diag1 == 4230)
dat$dse2 <- as.numeric(dat$diag2 == 4567)
Run Code Online (Sandbox Code Playgroud)
像这样:
dse$dse1<-0
dse$dse2<-0
dse$dse1[dse$diag1==4230]<-1
dse$dse2[dse$diag2==4567]<-1
Run Code Online (Sandbox Code Playgroud)
请给自己一个好的R教程(比如这个)并阅读所有关于索引向量的内容.