根据另一个值将值设置为变量

时间:2015-04-15 09:00:47

标签: r if-statement for-loop

我想将值6设置为变量" M3_rankin_factor"当" M3_mortalite"变量等于1.

  summary(M2clean$M3_rankin_factor)  
   0    1    2    3    4    5    6 NA's
 176   71   44   31   52   29    3   71 


  summary(M2clean$M3_mortalite)
Non  Oui NA's 
402   34   41 


  for (i in rownames(M2clean)) {if(!is.na(M2clean$M3_mortalite[i]) && M2clean$M3_mortalite == 1) M2clean$M3_rankin_factor[i] <- 6}


  summary(M2clean$M3_rankin_factor)
   0    1    2    3    4    5    6 NA's 
 176   71   44   31   52   29    3   71 

我不明白

3 个答案:

答案 0 :(得分:1)

试试这个

M2clean$M3_rankin_factor[M2clean$M3_mortalite == 1] <- 6

答案 1 :(得分:0)

您可以使用

M2clean$M3_rankin_factor[which(M2clean$M3_mortalite==1)] <- 6

只要1和6是所涉及变量的有效因子水平 使用which代替M2clean$M3_mortalite==1可以避免NA问题 我已经测试了它:它也适用于因素

f <- as.factor(c(NA,1,2,3))
#[1] <NA> 1    2    3
f[which(f==1)] <- 3
#[1] <NA> 3    2    3 

答案 2 :(得分:0)

谢谢,它有效。 另一个答案:

M2clean[M2clean$M3_mortalite == "Oui" & (!is.na(M2clean$M3_mortalite)), "M3_rankin_factor"] <- 6