rem*_*emi 3 conditional r plyr dataframe
这在某种程度上是对上一个问题的跟进,该问题的想法是根据多个条件替换 data.frame 中的给定值。
这是一个简单的例子,它以 R 为基础:
df <- data.frame( var1=c("k",2,NA,6,5,"K","k",1),
              var2=c(4,2,6,0,9,1,3,2),
              var3=c("d","d","d","d","d","d","n","f"))
df
    var1 var2 var3
1    k    4    d
2    2    2    d
3 <NA>    6    d
4    6    0    d
5    5    9    d
6    K    1    d
7    k    3    n
8    1    2    f
目标是修改值var1==k&var3==n说一个因子 9:
df$var2[df$var1=="k" & df$var3=="n"] <- df$var2[df$var1=="k" & df$var3=="n"]/9
但是,感兴趣的实际 df 会生成上述问题中所述的错误消息。其中提供的答案,否定每个条件的 NA,df$var1=="k" & !is.na(df$var1)用大量的代码行解决了这个问题。
我的问题:是否有更简单的解决方案使用让我们说plyr?
我们可以使用data.table. 将“data.frame”转换为“data.table”(setDT(df))。我们在 'i' 中指定逻辑条件,将:=变量 ('var2') 赋值 ( ) 为 'var2/9'。这将是有效的,因为它会进行适当的修改。
library(data.table)
setDT(df)[!is.na(var1) & var1=='k' & var3=='n', var2 := var2/9]