使用 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
获取 mean
和 sd
.
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))
也许,您正在计算 mean
和 sd
的计数:
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
我正在将一份报告从 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
获取 mean
和 sd
.
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))
也许,您正在计算 mean
和 sd
的计数:
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