R:根据同一行的另一列中的值更改数据框中的值

时间:2014-09-18 13:06:04

标签: r dataframe

假设我有这种数据框:

 df <- data.frame(
     t=rep(seq(0,2),6),
     no=rep(c(1,2,3,4,5,6),each=3),
     value=rnorm(18),g=rep(c("nc","c1", NA),each=3)
     )

   t no      value  g
1  0  1  0.5022163 nc
2  1  1  0.5687227 nc
3  2  1 -0.2922622 nc
4  0  2 -0.3587089 c1
5  1  2 -0.9028012 c1
6  2  2  0.1926774 c1
7  0  3  0.6771236 NA
8  1  3  0.3752632 NA
9  2  3  0.2795892 NA
10 0  4 -0.4565521 nc
11 1  4 -0.1241807 nc
12 2  4 -1.2603695 nc
13 0  5 -0.6323118 c1
14 1  5 -0.6283850 c1
15 2  5 -0.2052317 c1
16 0  6  1.5996913 NA
17 1  6 -0.4802057 NA
18 2  6 -0.4255056 NA

每当df$valueNA(仅在相同的行中)时,我想将NA中的值设置为df$g。 同样,将df$value中的值设置为NA,如果df$no15

我在使用for循环时无所事事,但我无法做到正确。

任何帮助将不胜感激。 感谢

1 个答案:

答案 0 :(得分:0)

使用for循环

for (i in 1:nrow(df)) {
   if (df$no[i] == 1 | df$no[i] == 5 | is.na(df$g[i])) {
      df$value[i] <- NA
   }
}