【发布时间】:2020-05-18 02:52:30
【问题描述】:
我正在处理一项调查数据。它询问了几个关于受访者对几个项目的满意度的矩阵问题。下面是一个例子。
q1:您对 A 项的满意程度如何? "非常满意" "比较满意" 有些不满意" 很不满意"
q2:您对 B 项的满意程度如何? "非常满意" "比较满意" 有些不满意" 很不满意"
q3:您对 C 项的满意程度如何? "非常满意" "比较满意" 有些不满意" 很不满意"
q4:您对 D 项的满意程度如何? "非常满意" "比较满意" 有些不满意" 很不满意"
数据如下:
df <- data.frame(q1 = c("Very satisfied", "Somewhat satisfied", "Very satisfied", "Very satisfied", "Somewhat satisfied", "Very dissatisfied", "Very satisfied", "Very dissatisfied", "Very dissatisfied", "Somewhat dissatisfied"),
q2 = c("Somewhat satisfied", "Very satisfied", "Somewhat satisfied", "Very satisfied", "Very satisfied", "Somewhat dissatisfied", "Somewhat dissatisfied", "Somewhat dissatisfied", "Very dissatisfied", "Very dissatisfied"),
q3 = c("Very satisfied", "Somewhat satisfied", "Very satisfied", "Very satisfied", "Somewhat satisfied", "Very dissatisfied", "Very satisfied", "Very dissatisfied", "Very dissatisfied", "Somewhat dissatisfied"),
q4 = c("Somewhat satisfied", "Very satisfied", "Somewhat satisfied", "Very satisfied", "Very satisfied", "Somewhat dissatisfied", "Somewhat dissatisfied", "Somewhat dissatisfied", "Very dissatisfied", "Very dissatisfied"))
q1 q2 q3 q4
1 Very satisfied Somewhat satisfied Very satisfied Somewhat satisfied
2 Somewhat satisfied Very satisfied Somewhat satisfied Very satisfied
3 Very satisfied Somewhat satisfied Very satisfied Somewhat satisfied
4 Very satisfied Very satisfied Very satisfied Very satisfied
5 Somewhat satisfied Very satisfied Somewhat satisfied Very satisfied
6 Very dissatisfied Somewhat dissatisfied Very dissatisfied Somewhat dissatisfied
7 Very satisfied Somewhat dissatisfied Very satisfied Somewhat dissatisfied
8 Very dissatisfied Somewhat dissatisfied Very dissatisfied Somewhat dissatisfied
9 Very dissatisfied Very dissatisfied Very dissatisfied Very dissatisfied
10 Somewhat dissatisfied Very dissatisfied Somewhat dissatisfied Very dissatisfied
我应该通过以下模式找出所有这些观察结果:
案例1
如果 q1 = “非常满意” 并且 q2 = “有点满意” 并且 q3 = “非常满意” 和 q4 = “有点满意”
案例2
或q1 = “非常满意” 和 q2 = “有点不满意” 和 q3 = “非常满意” 和 q4 = “有点不满意”
案例3
或 q1 = “非常满意” 和 q2 = “非常不满意” 和 q3 = “非常满意” 和 q4 = “非常不满意”
I can find this pattern using below command. However, since I have to do this for several matrices and number of questions in each matrix varies, I wonder if anyone knows an easy way of doing this.
df %>%
mutate(case1 = ifelse((q1 %in% "Very satisfied" & q2 %in% "Somewhat satisfied" & q3 %in% "Very satisfied" & q4 %in% "Somewhat satisfied"), TRUE, FALSE),
case2 = ifelse((q1 %in% "Very satisfied" & q2 %in% "Somewhat dissatisfied" & q3 %in% "Very satisfied" & q4 %in% "Somewhat dissatisfied"), TRUE, FALSE),
case3 = ifelse((q1 %in% "Very satisfied" & q2 %in% "Very dissatisfied" & q3 %in% "Very satisfied" & q4 %in% "Very dissatisfied"), TRUE, FALSE),
zigzag = ifelse((case1 %in% TRUE | case2 %in% TRUE | case3 %in% TRUE), 1, 0)
)
q1 q2 q3 q4 case1 case2 case3 zigzag
1 Very satisfied Somewhat satisfied Very satisfied Somewhat satisfied TRUE FALSE FALSE 1
2 Somewhat satisfied Very satisfied Somewhat satisfied Very satisfied FALSE FALSE FALSE 0
3 Very satisfied Somewhat satisfied Very satisfied Somewhat satisfied TRUE FALSE FALSE 1
4 Very satisfied Very satisfied Very satisfied Very satisfied FALSE FALSE FALSE 0
5 Somewhat satisfied Very satisfied Somewhat satisfied Very satisfied FALSE FALSE FALSE 0
6 Very dissatisfied Somewhat dissatisfied Very dissatisfied Somewhat dissatisfied FALSE FALSE FALSE 0
7 Very satisfied Somewhat dissatisfied Very satisfied Somewhat dissatisfied FALSE TRUE FALSE 1
8 Very dissatisfied Somewhat dissatisfied Very dissatisfied Somewhat dissatisfied FALSE FALSE FALSE 0
9 Very dissatisfied Very dissatisfied Very dissatisfied Very dissatisfied FALSE FALSE FALSE 0
10 Somewhat dissatisfied Very dissatisfied Somewhat dissatisfied Very dissatisfied FALSE FALSE FALSE 0
** 提前感谢您! **
【问题讨论】:
-
您是否根据多列中的逻辑条件对项目的选择进行了任何搜索?我很确定这已经被问及回答了。
-
我还要求您不要同时交叉发布到 twitter 或其他地方——这大多是不受欢迎的。如果你在这里问,相信足够多的眼球会得到它。
-
仅供参考,
ifelse(cond, TRUE, FALSE)与cond相同(没有ifelse)。 -
是的,我搜索过,但以前的解决方案都不起作用。
-
您应该发布您的全部编码工作以及您找到的帖子的链接。我们无法知道您犯了什么错误。如果您需要做的就是“找到”存在模式的行,那么:
df[with(df, q1 %in% "Very satisfied" & q2 %in% "Somewhat satisfied" & q3 %in% "Very satisfied" & q4 %in% "Somewhat satisfied"), ]
标签: r pattern-recognition zigzag