我想知道如何最好地组合以下两个数据框:
df1 <- data.frame(Date = c(1,2,3,4,5,6,7,8,9,10),
Altitude=c(100,101,101,102,103,99,98,99,89,70))
> df1
Date Altitude
1 1 100
2 2 101
3 3 101
4 4 102
5 5 103
6 6 99
7 7 98
8 8 99
9 9 89
10 10 70
df2 <- data.frame(Start = c(1,4,8),Stop = c(3,7,10),Longitude=c(10,12,13))
> df2
Start Stop Longitude
1 1 3 10
2 4 7 12
3 8 10 13
我基本上需要 df2 中的第三列,经度基于日期是否在开始和停止之间,结果如下:
Date Altitude Longitude
1 1 100 10
2 2 101 10
3 3 101 10
4 4 102 12
5 5 103 12
6 6 99 12
7 7 98 12
8 8 99 13
9 9 89 13
10 10 70 13
我一直在尝试各种子集化、过滤……但我就是想不出来。任何帮助将不胜感激!
亲切的问候
最佳答案
通过 dplyr 的一个想法是完成开始:停止序列,取消嵌套和合并,即
library(dplyr)
df2 %>%
mutate(Date = mapply(seq, Start, Stop)) %>%
tidyr::unnest() %>%
select(-c(1, 2)) %>%
right_join(df1, by = 'Date')
这给出了,
Longitude Date Altitude 1 10 1 100 2 10 2 101 3 10 3 101 4 12 4 102 5 12 5 103 6 12 6 99 7 12 7 98 8 13 8 99 9 13 9 89 10 13 10 70
关于r - 如何根据条件组合不等长的数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58433567/