基于两个数据帧 R 中多个条件的特定列的值
value of certain column based on multiple conditions in two data frames R
如上图,有df1和df2
如果你看一下 btime one df1 有 NA
我想用 all unique + stnseq = 1 填充 btime NA,因此只会填充每个 Unique 的第一个 NA
我希望它填充的值在 df2 中。条件是 all unique + boardstation = 8501970 在出发栏中添加值。
我试过聚合函数,但我不知道如何只为 boardstation 8501970 设置条件。
感谢任何人的帮助
如果我正确理解了问题,那么这可能会有所帮助。
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
如果你看一下 btime one df1 有 NA 我想用 all unique + stnseq = 1 填充 btime NA,因此只会填充每个 Unique 的第一个 NA
我希望它填充的值在 df2 中。条件是 all unique + boardstation = 8501970 在出发栏中添加值。
我试过聚合函数,但我不知道如何只为 boardstation 8501970 设置条件。
感谢任何人的帮助
如果我正确理解了问题,那么这可能会有所帮助。
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