gpt4 book ai didi

r - 如何根据 R 中的两个条件对数据框进行分组或子集化

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

我需要根据两种不同的条件创建数据的子集或组。这是数据结构的示例:

df <- data.frame(id = c("a", "a", "a", "b", "d", "b", "b", "c", "d", "e"),
kpi = c ("rev", "rev", "rev", "rev", "rev", "fte", "fte", "fte", "fte", "fte"),
value = c(100, 150, 200, 50, 70, 3, 5, 8, 9, 3))

id kpi value
1 a rev 100
2 a rev 150
3 a rev 200
4 b rev 50
5 d rev 70
6 b fte 3
7 b fte 5
8 c fte 8
9 d fte 9
10 e fte 3
  • 第一列填写公司 ID。每个 ID 可以有多行,因为它们可能有多个月的数据(样本数据中不包括月份列)以及 rev(收入)和 fte(全职当量)的数据

  • 我想选择 fte 平均值在一定范围内的每家公司:1-5

    • 例如,公司 b 应包括在内,因为它的平均全职员工为 4(一个月内 3 个月,另外 5 个月内),公司 d 应被排除在外,因为它的全职员工更高。
  • 对于包含的那些,我希望所有行都保留在数据框中,因此那些具有 rev 数据的行也是如此。目标是计算具有特定 fte 数量的公司队列的平均收入。

对于示例数据,具有上述条件的 new.data 框架应如下所示:

 df <- data.frame(id = c("b", "b", "b", "e"),
kpi = c("rev", "fte", "fte", "fte"), value = c(50, 3, 5, 3))

id kpi value
1 b rev 50
2 b fte 3
3 b fte 5
4 e fte 3

它将应用于大约 40,000 行的数据框。

我已经做了一些研究,发现了很多关于创建具有多个条件的子集的信息,但没有任何内容可以应用于我的特定问题。如果这是一个明显的问题,我很抱歉,我是 R 菜鸟,真的需要一些帮助!

如果我没有足够清楚地说明问题,请随时提问,我会尽量解释得更清楚!

提前谢谢大家!

最佳答案

对id进行分组,然后过滤满足条件的:

library(dplyr)

df %>%
group_by(id) %>%
filter(between(mean(value[kpi == "fte"]), 1, 5)) %>%
ungroup

给予:

# A tibble: 4 x 3
id kpi value
<fct> <fct> <dbl>
1 b rev 50.
2 b fte 3.
3 b fte 5.
4 e fte 3.

关于r - 如何根据 R 中的两个条件对数据框进行分组或子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879383/

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