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
Run Code Online (Sandbox Code Playgroud)
目标是修改值var1==k&var3==n说一个因子 9:
df$var2[df$var1=="k" & df$var3=="n"] <- df$var2[df$var1=="k" & df$var3=="n"]/9
Run Code Online (Sandbox Code Playgroud)
但是,感兴趣的实际 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]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6260 次 |
| 最近记录: |