R语言 按多组汇总分类变量

rbl8hiat  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(159)

我从93篇独立的出版物中收集了1609个观察结果。我正在对我的数据进行定性分析,我有以下变量:土壤质地(粗粒土、桑迪、砂质壤土、砂质粘壤土)、实验设计(田间、温室和实验室)和出版物标题(93个唯一出版物标题)。我想计算每个实验设计的每个土壤质地的唯一出版物标题。
我只能使用以下代码获得每个实验设计每个土壤质地的唯一出版物标题:

df4_2 <- metadata2 %>%
  group_by(publication_title) %>%
  group_by(experiment_cond) %>%
  summarise(count = n_distinct(publication_title))%>%
  drop_na()
View(df4_2)

# OR

df4_3 <- metadata2 %>%
  group_by(publication_title) %>%
  group_by(soil_texture) %>%
  summarise(count = n_distinct(publication_title))%>%
  drop_na()
View(df4_3)

有人知道我如何总结每个土壤质地每个实验设计的独特出版物标题吗?
我尝试了下面的代码,但它不工作:

df4_4 <- metadata2 %>%
  group_by(publication_title) %>%
  group_by(soil_texture) %>%
  group_by(experiment_cond) %>%
  summarise(count = n_distinct(publication_title))%>%
  drop_na()
View(df4_4)
vd8tlhqk

vd8tlhqk1#

默认情况下,每个group_by()覆盖/删除任何先前的分组。要按多个变量分组,请将它们包含在同一个group_by()调用中:

library(dplyr)

metadata2 %>%
  group_by(soil_texture, experiment_cond) %>%
  summarise(count = n_distinct(publication_title)) %>%
  drop_na()

如果您确实需要在单独的调用中添加组(此处不需要,但有时很有用),请使用.add参数:

metadata2 %>%
  group_by(soil_texture) %>%
  group_by(experiment_cond, .add = TRUE) %>%
  summarise(count = n_distinct(publication_title)) %>%
  drop_na()

最后,请注意,不应该按publication_title分组;如果这样做,则每组的n_distinct()将始终为1。

相关问题