Михаил Табаков Asked:2020-05-05 00:06:07 +0800 CST2020-05-05 00:06:07 +0800 CST 2020-05-05 00:06:07 +0800 CST 组合不同长度的数据帧 772 我有两个具有不同行数的数据框。第一列是观察的条件索引,第二列是观察的值。我需要通过它们的索引将这两个数据帧组合成一个,如果在任何一个数据帧中没有观察到与第一个相同的索引,那么我需要用空值 0 或 NA 填充这个变量。 a <- data.table(c(1,2,3,4,5), c(43,56,76,34,12)) b <- data.table(c(1,3,5,6), c(33,21,84,25)) 为清楚起见,我将举例说明最后一帧应该发生什么。 r 1 个回答 Voted Best Answer Artem Klevtsov 2020-05-05T18:58:27+08:002020-05-05T18:58:27+08:00 工作时data.table使用该功能很方便merge。在这种情况下,我们需要指定参数all = TRUE来获得类似于 FULL JOIN 的行为。 > res <- merge(a, b, by = c("V1"), all = TRUE) > res V1 V2.x V2.y 1: 1 43 33 2: 2 56 NA 3: 3 76 21 4: 4 34 NA 5: 5 12 84 6: 6 NA 25 您可以使用函数来填充缺失值setnafill。 > setnafill(res, cols = c("V2.x", "V2.y"), fill = 0) > res V1 V2.x V2.y 1: 1 43 33 2: 2 56 0 3: 3 76 21 4: 4 34 0 5: 5 12 84 6: 6 0 25 请注意,它setnafill会“就地”修改表,类似于包中以 .data.table为前缀的其他函数set。
工作时
data.table
使用该功能很方便merge
。在这种情况下,我们需要指定参数all = TRUE
来获得类似于 FULL JOIN 的行为。您可以使用函数来填充缺失值
setnafill
。请注意,它
setnafill
会“就地”修改表,类似于包中以 .data.table
为前缀的其他函数set
。