首页 > 解决方案 > 如何在 R 中按两列分组,但第二个是 if 语句?

问题描述

我在互联网上找不到任何帮助。我在 .sav 文件中有 3 个 cols 加载到 R studio。

M with values 1,2,3,4,5,6,7label: weight, 并且 N with values 1,2,3label diet.

我想按这些列对其进行分组,但对于Ncol 我只想选择值为 1 的那些。此外,我还有最后一列带有年龄数据A

我写了这个:

library(dplyr)
df%>%
  group_by(M, N) %>% 
  summarize(values = mean(A, na.rm = TRUE))

我得到了分组,但对于所有 N. 我尝试了这样的事情:

library(dplyr)
df%>%
  group_by(M, N == 1) %>% 
  summarize(values = mean(A, na.rm = TRUE))

但是我再次从 N 和 NA 等中获得了所有类别的组。

预期:我只想要 group_by by M - 所有值,以及 value = 1 的 N。

那组应该怎么看?

标签: rdataframe

解决方案


我们可以按“M”和summarise过滤后的“A”进行分组

library(dplyr)
df %>% 
   group_by(M) %>% 
   summarise(values = mean(A[N == 1], na.rm = TRUE))

或者另一种选择是filter介于两者之间,但这也会删除没有“N”的组为 1

df %>%
   filter(N == 1) %>%
   group_by(M) %>%
   summarise(values = mean(A, na.rm = TRUE))

推荐阅读