(R)如何分组,然后按列的每个元素(而不是列本身)进行汇总?

xriantvc  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(97)

我有一个数据框

df <- tribble(~Name, ~Numeric, ~String,
              "Python", 9, c("ABCD", "A", "AB"),
              "R", 14, c("XYZ", "Q", "ABCD"),
              "Java", 3, c("AB", "A"),
              "SQL", 6, c("AB", "A", "XYZ"),
              "Excel", 20, c("AB", "Q"))

我希望能够以这样一种方式'group_by',即我能够按每个单独的字符串(如“ABCD”或“A”)汇总数据。
如果我只是简单地尝试group_by字符串列,我会得到这些对我没有用的结果:

df_grouped <- df %>% group_by(String) %>% summarize(mean_numeric = mean(Numeric))

      String                    mean_numeric
1   c("ABCD", "A", "AB")          9
2   c("XYZ", "Q", "ABCD")         14
3   c("AB", "A")                  3
4   c("AB", "A", "XYZ")           6
5   c("AB", "Q")                  20

我宁愿需要这样的总结(取元素所在的所有行的数值的平均值):

string_element               mean_numeric         
"ABCD"                          11.5               
"A"                              6

我该怎么做呢?

pzfprimi

pzfprimi1#

您的数据是嵌套的。请在以下之前使用unnest

library(tidyr)
library(dplyr)

df %>%
  unnest(String) %>% 
  group_by(String) %>% 
  summarise(mean = mean(Numeric, na.rm = TRUE))
String  mean
  <chr>  <dbl>
1 A        6  
2 AB       9.5
3 ABCD    11.5
4 Q       17  
5 XYZ     10

相关问题