r - 带有两个 data.tables 的类似合并的场景

标签 r data.table

我有两个数据框(实际上是 data.tables)。

set.seed(123)
dt1 <- data.table(P=rep(letters[1:3],c(4,2,3)),X=sample(9))
dt1
   P X
1: a 3
2: a 7
3: a 9
4: a 6
5: b 5
6: b 1
7: c 2
8: c 8
9: c 4

和:
dt2 <- data.table(P=rep(letters[1:5],length=10),D=c("X","Y","Z","G","F"))
dt2
    P D
 1: a X
 2: b Y
 3: c Z
 4: d G
 5: e F
 6: a X
 7: b Y
 8: c Z
 9: d G
10: e F

现在我想向 dt1 添加一个新列,dt2 的列“D”,其中 P 在 dt1 和 dt2 中具有相同的值。它应该是这样的:
dt_new
   P X D
1: a 3 X
2: a 7 X
3: a 9 X
4: a 6 X
5: b 5 Y
6: b 1 Y
7: c 2 Z
8: c 8 Z
9: c 4 Z

最佳答案

我会做一个 data.table join以这种方式:

setkey(dt1, P)
dt1[unique(dt2),nomatch=0]

   P X D
1: a 3 X
2: a 7 X
3: a 9 X
4: a 6 X
5: b 5 Y
6: b 1 Y
7: c 2 Z
8: c 8 Z
9: c 4 Z

关于r - 带有两个 data.tables 的类似合并的场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18345905/

相关文章:

r - 使用 dplyr 选择列

r - DT::datatable – 格式化选定的列?

r - Unique in data.table 错误地删除了一些值

r - 提高 xts 的多个时间范围子集的性能?

r - Lapply to all columns in a data.frame 除了一个并替换R中的数据

arrays - R 中球体的网格或数组表示

r - 如何读取具有多个制表符作为分隔符且空格是列值一部分的文件

r - 使用 data.table 识别从 0 到 1 的跳转

r - 将data.frame转换为data.table列丢失

r - 如何加快在数据表中查找反向行的过程