我试图按日期组合到付款流,但当我使用full_join时,它会复制一些付款流,使分析变得不可能。
例如,当我使用示例数据运行此代码时:
library(tidyquant)
v1 = c("a", "a", "b", "b", "c", "c")
v2 = c(1,2,3,4,3,4)
v3 = c("a", "b", "c")
v4 = c(10,20,30)
df1 = data.frame(v1, v2)
df2 = data.frame(v3, v4)
full_join(df1, df2, by = c("v1" = "v3"))
我得到这个输出:
v1 v2 v4
1 a 1 10
2 a 2 10
3 b 3 20
4 b 4 20
5 c 3 30
6 c 4 30
但我想要这个:
v1 v2 v4
1 a 1 10
2 a 2 NA
3 b 3 20
4 b 4 NA
5 c 3 30
6 c 4 NA
有没有办法,使用dplyrs join或其他函数来获得我想要的输出。
library(data.table)
#convert to data.table format
setDT(df1); setDT(df2)
#update join non-duplicated v1-values
df1[!duplicated(v1), v4 := df2[df1[!duplicated(v1),], v4, on = .(v3 = v1)]]
# v1 v2 v4
# 1: a 1 10
# 2: a 2 NA
# 3: b 3 20
# 4: b 4 NA
# 5: c 3 30
# 6: c 4 NA