如何在 R 中创建列联表?
How do I create contingency tables in R?
我有一个包含许多变量的大型数据框。
许多是李克特量表答案和观察所属的学校它们是逻辑变量(并且可以包括重叠)。
示例:
Q1 <- c(1,2,2,4,3,5)
Q2 <- c(3,4,3,5,4,5)
A <- c(TRUE,FALSE,TRUE,TRUE,FALSE,TRUE)
B <- c(FALSE,TRUE,FALSE,TRUE,FALSE,FALSE)
df <- data.frame(Q1,Q2, A, B)
我想要的输出是一个偶然事件table :
Q1
1 2 3 4 5
A 1 1 0 1 1
B 0 1 0 1 0
我可以在学校之间进行 chi2
测试 - 这里 A
和 B
。我没有尝试过。
我觉得我在网上看到的可能有答案,但我缺乏认识它的知识!
我们可以使用dplyr/tidyr
。我们按 'Q1' 分组,使用 summarise_each
得到 'A' 的 sum
,'B' 列,将 'wide' 转换为 'long' 格式使用 gather
并使用 `spread.
将其重塑回 'wide'
library(dplyr)
library(tidyr)
df %>%
group_by(Q1) %>%
summarise_each(funs(sum(.)), A:B) %>%
gather(Var, Val,-Q1) %>%
spread(Q1, Val)
# Var 1 2 3 4 5
# (fctr) (int) (int) (int) (int) (int)
# 1 A 1 1 0 1 1
# 2 B 0 1 0 1 0
一个base R
选项在转换为long
格式后是xtabs
d1 <- data.frame(Q1= rep(Q1,2), Var= rep(names(df)[3:4],
each=nrow(df)), Val=unlist(df[3:4]))
xtabs(Val~Var+Q1, d1)
# Q1
#Var 1 2 3 4 5
# A 1 1 0 1 1
# B 0 1 0 1 0
我有一个包含许多变量的大型数据框。 许多是李克特量表答案和观察所属的学校它们是逻辑变量(并且可以包括重叠)。
示例:
Q1 <- c(1,2,2,4,3,5)
Q2 <- c(3,4,3,5,4,5)
A <- c(TRUE,FALSE,TRUE,TRUE,FALSE,TRUE)
B <- c(FALSE,TRUE,FALSE,TRUE,FALSE,FALSE)
df <- data.frame(Q1,Q2, A, B)
我想要的输出是一个偶然事件table :
Q1
1 2 3 4 5
A 1 1 0 1 1
B 0 1 0 1 0
我可以在学校之间进行 chi2
测试 - 这里 A
和 B
。我没有尝试过。
我觉得我在网上看到的可能有答案,但我缺乏认识它的知识!
我们可以使用dplyr/tidyr
。我们按 'Q1' 分组,使用 summarise_each
得到 'A' 的 sum
,'B' 列,将 'wide' 转换为 'long' 格式使用 gather
并使用 `spread.
library(dplyr)
library(tidyr)
df %>%
group_by(Q1) %>%
summarise_each(funs(sum(.)), A:B) %>%
gather(Var, Val,-Q1) %>%
spread(Q1, Val)
# Var 1 2 3 4 5
# (fctr) (int) (int) (int) (int) (int)
# 1 A 1 1 0 1 1
# 2 B 0 1 0 1 0
一个base R
选项在转换为long
格式后是xtabs
d1 <- data.frame(Q1= rep(Q1,2), Var= rep(names(df)[3:4],
each=nrow(df)), Val=unlist(df[3:4]))
xtabs(Val~Var+Q1, d1)
# Q1
#Var 1 2 3 4 5
# A 1 1 0 1 1
# B 0 1 0 1 0