【问题标题】:subset columns with common values in long data frame长数据框中具有公共值的子集列
【发布时间】:2015-07-28 21:52:36
【问题描述】:

我有以下数据框:

Group 1 ID A    Value
Group 1 ID B    Value
Group 1 ID C    Value
Group 2 ID B    Value
Group 2 ID C    Value
Group 3 ID B    Value
…   …   …

我正在尝试使用 dplyr 来获取跨组的每个相同 ID 的平均值(例如,跨组 1、组 2 和组 3 的 ID B 值的平均值)。但是,并非每个组都具有所有 ID,因此我想进行子集化,以便仅计算所有组中的 ID 的平均值。我知道我可以group_by(dataFrame, group) %>% filter subset %>% group_by(id) %>% mutate(mean),但我不知道在过滤器子集中放置什么代码。

【问题讨论】:

  • 您知道数据集中唯一 ID 的总数吗?这可以很简单,例如,在您按group 分组后,filter(n_distinct(id) == 3)

标签: r dplyr


【解决方案1】:

怎么样

df %>%
  group_by(id) %>%
  mutate(count  = n()) %>%
  filter(count != ngroups) %>% #...

所以基本上删除数据框中所有与未出现在所有组中的 ID 对应的行,然后执行计算。

【讨论】:

  • 你可以结合过滤和变异步骤
猜你喜欢
  • 1970-01-01
  • 2023-01-12
  • 2018-01-04
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 2016-06-01
相关资源
最近更新 更多