【问题标题】:Dplyr mutating using another dataframe [duplicate]Dplyr使用另一个数据框进行变异[重复]
【发布时间】:2021-08-17 07:38:08
【问题描述】:

假设我想通过在 Stimuli 数据框中找到相应的数字并找到它的奖励来改变 stim1 的列 ev1。例如

数据中的stim1是这样的

  stim1
1     2
2     1
3     3
4     2
5     1

刺激看起来像这样

    number    reward
1        0 0.0000000
2        1 0.3333333
3        2 0.6666667
4        3 1.0000000...

期望的结果

  stim1   ev1
1     2    0.6666667
2     1    0.3333333
3     3    1.0000000
4     2    0.6666667
5     1    0.3333333

我的尝试

data %>%  
  mutate(ev1=Stimuli$reward[which(Reward$number==stim1)]) -> data_modified

产生错误。任何帮助将不胜感激!

【问题讨论】:

  • stim1第二行从4变成1,第四行从5变成2怎么办?
  • 这是一个错字,感谢您指出这一点!刚刚编辑过

标签: r dataframe dplyr


【解决方案1】:

我们可以做一个left_join:

left_join() 返回 x 中的所有行,以及 x 和 y 中的所有列。 x 中没有匹配 y 的行将在新列中具有 NA 值。如果 x 和 y 之间有多个匹配项,则返回匹配项的所有组合。

library(dplyr)
left_join(stim1, Stimuli, by=c("stim1"="number"))

输出:

stim1    reward
1     2 0.6666667
2     1 0.3333333
3     3 1.0000000
4     2 0.6666667
5     1 0.3333333

【讨论】:

  • 完美,谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 2019-03-14
  • 2014-04-15
相关资源
最近更新 更多