gpt4 book ai didi

根据多个条件替换 data.frame 上的值

转载 作者:行者123 更新时间:2023-12-04 00:12:16 26 4
gpt4 key购买 nike

这有点像之前 question 的后续其中的想法是根据多个条件替换 data.frame 中的给定值。

这是一个简单的例子,使用 base 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==kvar3==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]

关于根据多个条件替换 data.frame 上的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32803740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com