根据另一个索引建立一个数据框,其中部分列名称匹配

时间:2020-06-28 01:35:37

标签: r dataframe indexing replace dplyr

我在R中有两个数据框,其中包含在线实验的数据,参与者在屏幕上对单词进行了评分。数据帧对应于反应时间和单词等级。我不想在参与者不到1秒的时间内对单词进行评分的试验。

RT数据帧包含每个单词标记的列。例如。 “ RT.word_1”,“ RT.word_2”等。第二个数据帧还包含每个单词标记的列。例如。 “ rating.word_1”,“ rating.word_2”等。在两个数据框中,这些行对应于各个参与者。 rating dataframe RT dataframe

我已经重新编码了RT数据帧,因此现在1秒以下的任何反应时间都为NA。我想做的是重新编码我的评级数据框,使其包含完全相同索引处的NAs 。也就是说,我想按参与者和单词#索引到我的评分数据帧中,找出该单词的反应是否在我的RT数据帧中编码为NA,并且在这种情况下也将其编码为NA。我不知道在没有for循环的情况下如何做到这一点,如果像我这样的语句将与python一起使用,任何建议都将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

AFAIK,您必须编写一个循环来处理列,但可以向量化NA值的位置。

ratings <- data.frame(
  rating.word_1 = c(1, 1, 4),
  rating.word_2 = c(4, 3, 3)
)

RT <- data.frame(
  RT.word_1 = c(2.360, NA, 1.328),
  RT.word_2 = c(NA, 1.719, 2.469)
)

for (col_index in 1:ncol(RT)) {
  target_rows <- is.na(RT[[col_index]])
  ratings[target_rows, col_index] <- NA
}

R可以在作业的左侧执行这种计算,我一直觉得这很奇怪,但是更有经验的R程序员告诉我,这是范例。