基于两个数据帧R中的多个条件的某列的值

时间:2018-03-22 07:58:01

标签: r multiple-conditions

enter image description here enter image description here 如上所示,有df1和df2

如果你看一下btime,一个df1就有NA 我想用所有唯一+ stnseq = 1 来填充btime NAs,因此只会填充每个Unique的第一个NA

我希望它填充的值是df2。条件是所有唯一+ boardstation = 8501970 在出发列中添加值。

我已经尝试过聚合功能,但我不知道如何只为boardstation 8501970制作条件。

感谢任何人的帮助

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,那么这可能有所帮助。

library(dplyr)

df2 %>%
  group_by(unique) %>%
  summarise(departure_sum = sum(departure[boardstation==8501970])) %>%
  right_join(df1, by="unique") %>%
  mutate(btime = ifelse(is.na(btime) & stnseq==1, departure_sum, btime)) %>%
  select(-departure_sum) %>%
  data.frame()

由于样本数据是图像格式,我自己制作了如下数据:

df1
  unique stnseq btime
1      1      1    NA
2      1      2    NA
3      2      1    NA
4      2      2   200

df2
  unique boardstation departure
1      1      8501970         1
2      1      8501970         2
3      1          123         3
4      2      8501970         4
5      2          456         5
6      3          900         6

输出为:

  unique stnseq btime
1      1      1     3
2      1      2    NA
3      2      1     4
4      2      2   200