r-基于表示行数和列数的其他变量在表中查找值

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

在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生成了一个名为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列(请注意,
?“[”
中没有记录这一点,您实际上不打算使用它来索引。如果您希望每行坐标有一个数字,建议使用帮助文件中所述的方法,即以两列矩阵的形式提供坐标)