r - 合并并从R中的两个不同数据表中获取最大值

标签 r data.table

我有 2 个不同的数据表。我需要合并并根据行值获取最大值。两个表的示例作为下面的输入和下面所示的预期输出给出。

输入

表1

X   A   B
A   3   
B   4   6
C   5   
D   9   12

表2

X   A   B    
A   1   5
B   6   8
C   7   14
D   5   
E   1   1
F   2   3
G   5   6

预期输出:

X   A   B
A   3   5
B   6   8
C   7   14
D   9   12
E   1   1
F   2   3
G   5   6

最佳答案

我们可以rbind两个数据集并按max进行分组

library(data.table)
rbindlist(list(tbl1, tbl2))[, lapply(.SD, max, na.rm = TRUE), X]
#   X A  B
#1: A 3  5
#2: B 6  8
#3: C 7 14
#4: D 9 12
#5: E 1  1
#6: F 2  3
#7: G 5  6

如果我们使用base R,则在rbind数据集之后使用aggregate

aggregate(.~ X, rbind(tbl1, tbl2), max, na.rm = TRUE, na.action = NULL)

注意:假设“A”、“B”列是数字,空白是NA

数据

tbl1 <- structure(list(X = c("A", "B", "C", "D"), A = c(3L, 4L, 5L, 9L
 ), B = c(NA, 6L, NA, 12L)), .Names = c("X", "A", "B"), class = "data.frame",
  row.names = c(NA, -4L))

tbl2 <- structure(list(X = c("A", "B", "C", "D", "E", "F", "G"), A = c(1L, 
6L, 7L, 5L, 1L, 2L, 5L), B = c(5L, 8L, 14L, NA, 1L, 3L, 6L)), .Names = c("X", 
"A", "B"), class = "data.frame",
 row.names = c(NA, -7L))

关于r - 合并并从R中的两个不同数据表中获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47525323/

相关文章:

r - Cbind 两个数据,但使用 data.table 进行了一些修改

r - 在条件下将 which.min 应用于 data.table

r - data.table v.1.11.0+ 不再读取由 v.1.10.4-3 读取的数据文件

r - 如何找到定义函数的文件?

r - 在 R 中的 ggplot2 中外推散点图的线性拟合

r - 加载 ggplot2 包时出错

r - 恐惧 : file not found

r - 在 dplyr 包中以链接方式添加属性

r - 指定 CFA,其中湍流是外生相关性的总和

r - Data.table:组合列(聚合的个别功能)