r-基于表示行数和列数的其他变量在表中查找值
在R中,我有一张人们对多项选择问卷的回答表,例如表1:r-基于表示行数和列数的其他变量在表中查找值,r,R,在R中,我有一张人们对多项选择问卷的回答表,例如表1: subject question1 question2 question3 person1 1 2 1 person2 2 1 3 person3 4 3 1 person4 2 4 2 我有一些表格,我想用它们来组合问题的答案,以产生一个新的变量,例如表2: Q2
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生成了一个名为combinedq1q2.1、combinedq1q2.2、combinedq1q2.3等的无数列。。。我不明白为什么会发生这种情况,也不知道如何解决它。):我将感谢任何帮助
我确实看过了,如果我找不到任何其他解决方案,我就从那里复制代码,而不是真正理解它。但由于我查找的值与行数和列数相同,所以我希望有一个更简单的解决方案
谢谢
编辑:谢谢你的回复!我在表2中添加了行和列名以澄清问题。我试图使用问题1和问题2的答案来查找/访问表2中第三个变量的值(我已经有了表2;我不需要生成它)。另外,在我前面的示例中,combinedq1q2恰好总是与问题1匹配,所以我添加了另一个人/行,以表明情况并非总是如此
我将尝试到目前为止的建议,尽管我对人们说我将为个人3组合Q1Q2=5感到困惑。我想你的问题是“我如何查找表2
的第(问题1,问题2)行(列,列)并为每个人保存结果”,其中给出了表2
。(与“如何生成表2
”相反)
如果是这样,您可以在表中使用矩阵索引。Ie制作一个两列矩阵,其中每行是(行,列)坐标,并使用该矩阵索引表2
df$question1question2 = table2[cbind(df$question1, df$question2)]
但是,此输出与您的不匹配。例如,person3有(question1,question2)=(4,3),table2
的元素是5,但在您想要的输出中有4(事实上,看起来您只是希望question1question2
与question1
相同)
你必须澄清你想要的结果
如果你的问题是关于如何生成一个
表2
,你必须回答我关于这个表是如何构造的评论。你的输出没有意义。例如,个人3回答了问题1的4和问题2的3,所以根据你的说法,表2[4,3]应该等于4,但你把它作为5。另外,如果多个人对问题1和问题2有相同的答案,或者如果没有人有这个(问题1,问题2)组合,你会怎么做?(在你的示例表2中,你的(1,3)值为3,但没有人用1回答问题1,用3回答问题2。此外,你的“我希望以”combinedq1q2
结尾似乎与question1
一样,与您的表格2
不匹配表格1$combinedq1q2哦,我明白了-是您有表格2
(其定义与您的解释不匹配),但您想从table2
中访问值?或者您想生成table2
?您的解决方案和alistaire都有效--感谢您的帮助!有谁能告诉我为什么只需table1$combinedq1q2=(表2[表1$question1,表1$question2])
没有按预期工作?我相信如果你同时向[
提供I
和j
,你会得到一个矩阵,其中包含表1$question1
中的所有行和表1$question2
中的所有列。例如,如果你把表2[c(1,2,4,2)]
放进去,你会得到第1、2、4、2行(再次)以及表2
的第2、1、3、4列(请注意,?“[”
中没有记录这一点,您实际上不打算使用它来索引。如果您希望每行坐标有一个数字,建议使用帮助文件中所述的方法,即以两列矩阵的形式提供坐标)