gpt4 book ai didi

根据条件删除熔化数据

转载 作者:行者123 更新时间:2023-12-01 10:36:31 27 4
gpt4 key购买 nike

我想删除 avalue >= b 的所有行,但我不确定该怎么做这个。

示例数据:

df <- data.frame(day = c(1, 1, 2, 2, 3, 3), var = c("a", "b", "a", "b", "a", "b"), value = c(1, 2, 3, 3, 2, 1)

输出:

  day var value
1 1 a 1
2 1 b 2
3 2 a 3
4 2 b 3
5 3 a 2
6 3 b 1

期望的输出:

  day var value
1 1 a 1
2 1 b 2

最佳答案

这是避免从长到宽的 data.table 解决方案:

dt <- data.table(df)
dt[,if(value[var == 'a'] >= value[var == 'b']) .SD,by = day]

编辑:我现在意识到你想要的输出不符合你最初的不平等,所以调整不平等来匹配:)

EDIT2:如果您不想在 data.table 中执行此操作,那么这里是 dplyr 解决方案

df %>% group_by(day) %>% filter(value[var == 'a'] >= value[var == 'b'])

EDIT3:如果你想把 NA 放进去,那么这个

df %>% group_by(day) %>% mutate(value = if(value[var == 'a'] >= value[var == 'b']) as.numeric(NA) else value) 

EDIT4:注意最后一个解决方案似乎暴露了一个错误,其中 NA 的处理很奇怪,请参见此处:Why is dplyr removing values not met by condition?

关于根据条件删除熔化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34485308/

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