r - 如何根据条件组合不等长的数据帧

标签 r

我想知道如何最好地组合以下两个数据框:

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/

相关文章:

r - 有效地创建变量,指示日期变量是否先于事件(按组)

R:处理包含字符串和 bool 值的 data.frames

r - 更改 R 数据框中的列值

r - 一张图中多个标签的多个箱线图

r - 对 r 中的连续整数进行分组并对组进行分析

r - R中是否有一个函数可以同时改变几个相似的因子水平?

r - 更改数据框中的值名称

python - 更改 RStudio 的默认 python 版本

r - 在 R 中提取字符串之前的数值

r - 为数据表中的每个唯一值仅选择第一个或最后一个值?