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

R:根据同一行另一列中的值更改数据框中的值,r,dataframe,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 -

假设我有这种数据帧:

 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带有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
   }
}
for(1中的i:nrow(df)){
if(df$no[i]==1 | df$no[i]==5 | is.na(df$g[i])){

df$value[i]
df[with(df,is.na(g)|(在%c(1,5)中没有%),“value”]非常感谢你,大卫。这正是我想要的。