使用 R 以均值和标准开发进行交叉表计数

Use R to make a cross tab count with means and standard dev

我正在将一份报告从 excel 转换为 R。我的数据框是这样的

Color   Year
Red     2020
Blue    2019
Blue    2020
Green   2020
Green   2019
Green   2020
Red     2019
Blue    2020

我需要一个带有计数的矩阵,最后是每种颜色的平均值和 SD 列,如下所示:

      2019      2020      Mean      SD
Red      1      1            1      0
Blue     1      2          1.5      1
Green    1      2          1.5      1

感谢任何帮助,这需要我两分钟 excel 但我需要转换为 R。提前致谢

您可以使用 table 获取计数,而不是 apply 获取 meansd.

y <- table(x)
cbind(y, mean=apply(y, 1, mean), sd=apply(y, 1, sd))
#      2019 2020 mean        sd
#Blue     1    2  1.5 0.7071068
#Green    1    2  1.5 0.7071068
#Red      1    1  1.0 0.0000000

数据:

x <- structure(list(Color = c("Red", "Blue", "Blue", "Green", "Green", 
"Green", "Red", "Blue"), Year = c(2020L, 2019L, 2020L, 2020L, 
2019L, 2020L, 2019L, 2020L)), class = "data.frame", row.names = c(NA, 
-8L))

也许,您正在计算 meansd 的计数:

library(dplyr)

df %>%
 count(Color, Year) %>%
 group_by(Color) %>%
 mutate(mean = mean(n),
        sd = sd(n)) %>%
 tidyr::pivot_wider(names_from = Year, values_from = n)

# Color   mean    sd `2019` `2020`
#  <chr> <dbl> <dbl>  <int>  <int>
#1 Blue    1.5 0.707      1      2
#2 Green   1.5 0.707      1      2
#3 Red     1   0          1      1