我目前有两个表:
A B
3.3 10
2.5 11
6.7 11
6.0 12
5.4 12
3.5 12
6.5 13
8.0 13
和
B Val
10 0
11 1
12 2
13 3
要做的是在第一个表中创建一个新列C,以使其包含值Val,该值对应于第一个表中B的每个元素,该值与第二个表中的B匹配。我想获得:
A B C
3.3 10 0
2.5 11 1
6.7 11 1
6.0 12 2
5.4 12 2
3.5 12 2
6.5 13 3
8.0 13 3
示例代码为:
DT.1 <- data.table(A=c(3.3,2.5,6.7,6.0,5.4,3.5,6.5,8.0), B=c(10,11,11,12,12,12,13,13))
DT.2 <- data.table(B=c(10,11,12,13),Val=c(0,1,2,3))
感谢任何提示或输入。
答案 0 :(得分:0)
连接部分肯定是重复的。.我包括了这个答案,因为还进行了一些重命名/重新排序。
dt1 <- fread("A B
3.3 10
2.5 11
6.7 11
6.0 12
5.4 12
3.5 12
6.5 13
8.0 13", header = TRUE)
dt2 <- fread("B Val
10 0
11 1
12 2
13 3", header = TRUE)
result <- dt2[dt1, on = .(B)]
setcolorder(result, c("A", "B", "Val") )
setnames(result, old = "Val", new = "C")
# A B C
# 1: 3.3 10 0
# 2: 2.5 11 1
# 3: 6.7 11 1
# 4: 6.0 12 2
# 5: 5.4 12 2
# 6: 3.5 12 2
# 7: 6.5 13 3
# 8: 8.0 13 3