【发布时间】:2016-10-07 02:41:16
【问题描述】:
在 R 中,我有一张人们对多项选择问卷的回答的表格,例如表 1:
subject question1 question2 question3
person1 1 2 1
person2 2 1 3
person3 4 3 1
person4 2 4 2
我有一些表格,我想用它们来组合他们对问题的答案以生成一个新变量,例如表2:
Q2=1 Q2=2 Q2=3 Q2=4
Q1=1 1 1 2 2
Q1=2 2 2 2 3
Q1=3 3 3 4 4
Q1=4 4 4 4 5
行号是他们对问题 1 的回答,而列号是他们对问题 2 的回答。例如,如果他们对问题 1 回答“3”,对问题 2 回答“2”,我需要在第二个表的第 3 行/第 2 列,即“3”。
当我使用代码时:
table1$combinedq1q2 = (table2[table1$question1, table1$question2])
我希望最终得到:
subject question1 question2 question3 combinedq1q2
person1 1 2 1 1
person2 2 1 3 2
person3 4 3 1 4
person4 2 4 2 3
但是,R 正在生成一个名为 combineq1q2.1、combinedq1q2.2、combinedq1q2.3 等的 bajillion 列...我不明白为什么会发生这种情况或如何解决它。 ): 如有任何帮助,我将不胜感激!
我确实查看了this thread,如果我找不到任何其他解决方案,我将直接从那里复制代码而不真正理解它。但由于我查找值的依据与行号和列号相同,我希望有一个更简单的解决方案。
谢谢!
编辑:感谢您的回复!我在表 2 中添加了行名和列名以进行澄清。我正在尝试使用问题 1 和问题 2 的答案来查找/访问表 2 中第三个变量的值(并且我已经有了表 2;我不需要生成它)。此外,在我之前的示例中,combinedq1q2 恰好总是匹配 question1,所以我添加了另一个人/行以表明情况并非总是如此。
我会尝试目前的建议,尽管我对有人说我会为 person3 得到 combineq1q2=5 感到困惑。
【问题讨论】:
-
您的输出没有意义。例如,person3 对 question1 的回答为 4,对 question2 的回答为 3,因此根据您的说法,table2[4, 3] 应该等于 4,但您却将其设为 5。另外,如果多个人对问题的回答相同,您会怎么做1和问题2?或者如果没有人有那个 (question1, question2) 组合? (在您的示例表 2 中,您的 (1, 3) 的值为 3,但没有人用 1 回答问题 1,用 3 回答问题 2。此外,您的“我希望最终得到”
combinedq1q2似乎与question1相同且与您的table2不匹配。 -
table1$combinedq1q2 <- mapply(function(q1, q2){table2[q1, q2]}, table1$question1, table1$question2) -
哦,我明白了 - 是不是您有
table2(其定义与您的解释不符),但您想访问来自 @987654331 的值@?或者您想生成table2?
标签: r