r - 根据表示行号和列号的其他变量在表中查找值

时间:2016-10-07 02:41:16

标签: 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=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的回答。例如,如果他们回答" 3"问题1和" 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等的bajillion列...我不明白为什么会发生这种情况或如何解决它。 ):我很感激任何帮助!

我确实看过this thread,如果我找不到任何其他解决方案,我只是从那里复制代码而不是真正理解它。但是,由于我查找的值与行数和列数相同,我希望有一个更简单的解决方案。

谢谢!

编辑:谢谢你的回复!我在表2中添加了行名和列名来澄清。我试图使用问题1和问题2的答案来查找/访问表2中第三个变量的值(我已经有表2;我不需要生成它)。另外,在我之前的例子中,combinedq1q2碰巧总是匹配问题1,所以我添加了另一个人/行来表明这不会总是如此。

我会尝试到目前为止所建议的内容,虽然我很困惑有人说我会为person3获得combinedq1q2 = 5。

1 个答案:

答案 0 :(得分:1)

认为你的问题是“我如何查找table2的(问题1,问题2)(第1行,第2行)并保存每个人的结果”,其中{ {1}}给出了。 (与“我如何生成table2”相反。

如果是这样,您可以在表格中使用矩阵索引。即制作一个2列矩阵,其中每一行是(行,列)坐标,并使用它来索引table2

table2

然而,此输出与您的输出不匹配。例如,person3有(question1,question2)=(4,3),df$question1question2 = table2[cbind(df$question1, df$question2)] 的元素是5,但在你想要的输出中你有4个(事实上,它看起来你只是想要{{1} }与table2相同。

您必须澄清所需的输出。

如果您的问题围绕如何生成 question1question2,那么您必须回答我关于该表格构建方式的评论。

相关问题