我根本无法想出一种基于较小的df来填充更大df的方法。我有一个大的空数据框,有两个时间列(分钟和小时)和另外12个包含NA元素的列。
另一方面,我在特定的"时间标签中进行了测量" (例如在h = 03min = 33或h = 14min 21)。
较大的数据帧更大,因为它具有连续时间",现在我想填写从较小数据帧到特定行的值。而且我没有任何测量值的行,我想让它们保持NA。
Haven真的找不到任何聪明的方法......
较小的数据集:
hours minutes color length 0 0 B 1 0 15 G 2 0 30 R 2 0 45 Y 5 1 0 Y 3 1 15 Y 2 1 30 B 1 1 45 W 1 . . . 23 45 B 3
更大的一个:
hours minutes color length 0 1 NA NA 0 2 NA NA 0 3 NA NA . . . 23 58 NA NA 23 59 NA NA
答案 0 :(得分:1)
我们可以使用left_join
。由于大型数据集中的最后一列为空,因此在执行连接时将其删除,以便在结果数据集中将NA
不匹配的元素
library(dplyr)
left_join(dflarge[1:2], dfsmall, by = c('hours', 'minutes'))
dfsmall <- structure(list(hours = c(0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L), minutes = c(0L,
15L, 30L, 45L, 0L, 15L, 30L, 45L), color = c("B", "G", "R", "Y",
"Y", "Y", "B", "W"), length = c(1L, 2L, 2L, 5L, 3L, 2L, 1L, 1L
)), class = "data.frame", row.names = c(NA, -8L))
dflarge <- expand.grid(hours = 0:2, minutes = 1:59)
dflarge[c("color", "length")] <- NA
dflarge <- dflarge[do.call(order, dflarge[1:2]),]
row.names(dflarge) <- NULL