gpt4 book ai didi

r - 制表多个响应问题

转载 作者:行者123 更新时间:2023-12-04 11:05:15 25 4
gpt4 key购买 nike

想象一下,我有一个问题,有四个选项,受访者可以选择零个或四个选项的任意组合。变量名为 A , B , C , 和 D并且响应存储在 data.frame 中,如下所示。

set.seed(1)
dat = data.frame(A = sample(c(0, 1), 20, replace=TRUE),
B = sample(c(0, 1), 20, replace=TRUE),
C = sample(c(0, 1), 20, replace=TRUE),
D = sample(c(0, 1), 20, replace=TRUE))

我可以通过执行以下操作将响应的组合(例如,有多少响应与 A 单独,或 A + BC + D 等):
data.frame(table(dat))
# A B C D Freq
# 1 0 0 0 0 2
# 2 1 0 0 0 2
# 3 0 1 0 0 0
# 4 1 1 0 0 1
# 5 0 0 1 0 1
# 6 1 0 1 0 3
# 7 0 1 1 0 0
# 8 1 1 1 0 2
# 9 0 0 0 1 0
# 10 1 0 0 1 2
# 11 0 1 0 1 1
# 12 1 1 0 1 1
# 13 0 0 1 1 2
# 14 1 0 1 1 0
# 15 0 1 1 1 3
# 16 1 1 1 1 0

我现在想创建一个新列,显示此输出所表示的字母组合。例如,第 4 行表示 A 的计数+ B响应,第 14 行表示 A 的计数+ C + D回应。

我认为其中之一 apply函数在这里很有用,但我不确定如何进行。

最佳答案

dat.t <- data.frame(table(dat))    
dat.t$combn <- apply(dat.t[,1:4] == 1, 1, function(x) paste(names(dat)[x], collapse=' + '))

> dat.t
A B C D Freq combn
1 0 0 0 0 2
2 1 0 0 0 2 A
3 0 1 0 0 0 B
4 1 1 0 0 1 A + B
5 0 0 1 0 1 C
6 1 0 1 0 3 A + C
7 0 1 1 0 0 B + C
8 1 1 1 0 2 A + B + C
9 0 0 0 1 0 D
10 1 0 0 1 2 A + D
11 0 1 0 1 1 B + D
12 1 1 0 1 1 A + B + D
13 0 0 1 1 2 C + D
14 1 0 1 1 0 A + C + D
15 0 1 1 1 3 B + C + D
16 1 1 1 1 0 A + B + C + D
>

关于r - 制表多个响应问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11348391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com