R 多变量频率表,按分类变量分组
我想创建一个由多个变量(X1-X4)组成的频率表,并按一个分类变量(颜色)分组。以下是示例数据:R 多变量频率表,按分类变量分组,r,R,我想创建一个由多个变量(X1-X4)组成的频率表,并按一个分类变量(颜色)分组。以下是示例数据: df <- data.frame(name = paste0("obj", 1:6), X1 = c(0,1,1,1,0,1), X2 = c(1,1,1,1,1,1), X3 = c(0,1,1,0,0,0), X4 = c(0,1,1,
df <- data.frame(name = paste0("obj", 1:6),
X1 = c(0,1,1,1,0,1),
X2 = c(1,1,1,1,1,1),
X3 = c(0,1,1,0,0,0),
X4 = c(0,1,1,1,0,0),
color = c("red","red","blue","green","green","blue"),
other = c(5,3,1,8,4,3))
非常感谢 您可以获取长格式的数据,对于每个
color
和列sum
值,获取宽格式的数据并添加Total
列
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = starts_with('X'), names_to = 'col') %>%
group_by(col, color) %>%
summarise(n = sum(value)) %>%
pivot_wider(names_from = color, values_from = n) %>%
ungroup %>%
janitor::adorn_totals(where = 'col')
#Or use `rowSums`
#mutate(Total = rowSums(.[-1]))
# col blue green red Total
# X1 2 1 1 4
# X2 2 2 2 6
# X3 1 0 1 2
# X4 1 1 1 3
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = starts_with('X'), names_to = 'col') %>%
group_by(col, color) %>%
summarise(n = sum(value)) %>%
pivot_wider(names_from = color, values_from = n) %>%
ungroup %>%
janitor::adorn_totals(where = 'col')
#Or use `rowSums`
#mutate(Total = rowSums(.[-1]))
# col blue green red Total
# X1 2 1 1 4
# X2 2 2 2 6
# X3 1 0 1 2
# X4 1 1 1 3