r - 通过 R 中其他 2 列的所有组合计算一列的平均值

标签 r

我想计算第一列和第二列的每种可能组合的平均值。对于第 1-2、3、4-6 行,依此类推。我怎样才能做到这一点?

第二个问题:如何获得 L 和 M 的每个组合的观测值数量? A 和 A 2 个 obs,A 和 B 1 个,A 和 I 3 个,...

        L      M    W
1       A      A 61.5
2       A      A 68.2
3       A      B 64.0
4       A      I 65.0
5       A      I 59.7
6       A      I 55.0
7       B      A 42.0
8       B      A 60.2
9       B      B 52.5
10      B      I 61.8
11      B      I 49.5
12      B      I 52.7

最佳答案

我们可以将 base R 中的 aggregate 与公式方法一起使用,并指定 . 来选择除以下列之外的所有其他列作为分组lhs 即“W”

aggregate(W ~., df1, mean)

或使用dplyr

library(dplyr)
df1 %>%
    group_by(across(where(is.character))) %>%
    summarise(Mean = mean(W), Count = n())

-输出

# A tibble: 6 x 4
# Groups:   L [2]
  L     M      Mean Count
  <chr> <chr> <dbl> <int>
1 A     A      64.8     2
2 A     B      64       1
3 A     I      59.9     3
4 B     A      51.1     2
5 B     B      52.5     1
6 B     I      54.7     3

数据

df1 <- structure(list(L = c("A", "A", "A", "A", "A", "A", "B", "B", 
"B", "B", "B", "B"), M = c("A", "A", "B", "I", "I", "I", "A", 
"A", "B", "I", "I", "I"), W = c(61.5, 68.2, 64, 65, 59.7, 55, 
42, 60.2, 52.5, 61.8, 49.5, 52.7)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"))

关于r - 通过 R 中其他 2 列的所有组合计算一列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67877018/

相关文章:

光栅包占用所有硬盘

r - 如何通过代理安装 R 包 [用户 + 密码]

r - 如何使用 rgl 绘制虚线/虚线

r - 独特的列组合

r - 在 Win7 上加载 rJava 包时出现问题

r - 使用具有 2 位有效数字的 formatC 的奇怪输出

运行 Map 减少矩阵的维数

r - Recommendationerlab,asMethod(object): invalid class 'NA' to dup_mMatrix_as_geMatrix中的错误

r - 来自 ODBC blob 的数据与 SQL 查询的返回不匹配

r - RMarkdown 和 Beamer 中的增量子项目符号