我有一个这样的数据框:

     id        adit     diag1   diag2
      2       3         4230    2234
      3       5         3345    4456
      4       6         4567    4467


我想使用下面的伪代码添加其他2列dse1dse2

if diag1 contains 4230 then dse1 = 1 else dse1 = 0

if diag2 contains 4567 then dse2 =1  else dse2 = 0


我用这个:

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}
  }
}


但是这些不起作用。

最佳答案

无需使用循环,例如使用ifelse

dse = within(dse, {
    dse1 = ifelse(diag1 == 4230, 1, 0)
    dse2 = ifelse(diag2 == 4567, 1, 0)
 })

07-24 09:52