【问题标题】:Index into one dataframe based on another with partial-match of column names基于列名部分匹配的另一个数据帧索引
【发布时间】:2020-10-18 09:15:31
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

标签: r dataframe indexing replace dplyr


【解决方案1】:

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 程序员告诉我这是典型的。

【讨论】:

    猜你喜欢
    • 2020-08-31
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    相关资源
    最近更新 更多