gpt4 book ai didi

r - 从另一个变量函数中按因子删除或保留观察值

转载 作者:行者123 更新时间:2023-12-02 08:09:58 26 4
gpt4 key购买 nike

我只想保留具有 3 个或更多实例的 ID 观察。或者,换句话说,按 ID 删除少于 3 个实例的观察。示例数据:

Instances <- data.frame(ID=c(111111, 111111, 111111, 111111, 
222222, 222222,
333333, 333333, 333333),
INSTANCE=c(1,2,3,4,1,2,1,2,3),
AMOUNT=c(100,120,108,112, 60, 65, 85, 90, 101))

Instances$ID <- as.factor(Instances$ID)
Instances$INSTANCE <- as.factor(Instances$INSTANCE)

从这个示例中,我希望返回 ID 111111 和 333333 的所有观察结果,但没有来自 222222 的观察结果。

我确定 magrittr 中需要我可以通过 ID 创建的管道功能。当我尝试这样做时,我无法将 INSTANCE > 3 的功能与 ID 绑定(bind)。我仍然理解 %>% 并仍在阅读它,但与此同时,我们将不胜感激任何关于为什么/如何工作的帮助和可能的解释。人们在外面保持温暖。

最佳答案

基础解决方案

a_x <- ave(Instances$INSTANCE,
Instances$ID,
FUN = max)

Instances[a_x >= 3,]

ID INSTANCE AMOUNT
1 111111 1 100
2 111111 2 120
3 111111 3 108
4 111111 4 112
7 333333 1 85
8 333333 2 90
9 333333 3 101

使用 dplyr:

library(dplyr) 

Instances %>%
group_by(ID) %>%
mutate(max_instance = max(INSTANCE)) %>%
filter(max_instance >= 3) %>%
select(-max_instance)

ID INSTANCE AMOUNT
1 111111 1 100
2 111111 2 120
3 111111 3 108
4 111111 4 112
7 333333 1 85
8 333333 2 90
9 333333 3 101

数据(注意我没有将IDINSTANCE 转换为因子)

Instances <- data.frame(ID=c(111111, 111111, 111111, 111111, 
222222, 222222,
333333, 333333, 333333),
INSTANCE=c(1,2,3,4,1,2,1,2,3),
AMOUNT=c(100,120,108,112, 60, 65, 85, 90, 101))

关于r - 从另一个变量函数中按因子删除或保留观察值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48100957/

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