还没有找到这个,所以我们走了。 我正在使用数据表,我想合并两个长度不同的表。 Ich已经成功地做到了。
所以基本上我把我的table1中我的键属性“Name,Date1”的所有行合并到我的表2中的关键属性“Name,Date2”。
我得到的问题是,我的桌子2中的Date2消失了。 我不喜欢那个。我想把我的日期2保留在表2中。
示例:
Name Date1
A 2018-01-01
A 2018-01-02
A 2018-01-03
Name Date2
A 2018-01-01
A 2018-01-02
A 2018-01-15
而不是在我的
中看起来像这样Name Date
A 2018-01-01
A 2018-01-02
A NA
它看起来应该是这样的
Name Date1 Date2
A 2018-01-01 2018-01-01
A 2018-01-02 2018-01-02
A NA NA
有人知道这个伎俩吗? 谢谢:))
答案 0 :(得分:0)
以下是sqldf
解决方案:
library(sqldf)
sqldf('select a.Name,
case when b.Date2 is NULL
then a.Date1 = NULL
else a.Date1
end as Date1
,b.Date2
from df1 as a
left join df2 as b
on a.Name = b.Name and
a.Date1 = b.Date2')
<强>结果:强>
Name Date1 Date2
1 A 2018-01-01 2018-01-01
2 A 2018-01-02 2018-01-02
3 A <NA> <NA>
数据:强>
df1 = structure(list(Name = structure(c(1L, 1L, 1L), .Label = "A", class = "factor"),
Date1 = structure(1:3, .Label = c("2018-01-01", "2018-01-02",
"2018-01-03"), class = "factor")), .Names = c("Name", "Date1"
), class = "data.frame", row.names = c(NA, -3L))
df2 = structure(list(Name = structure(c(1L, 1L, 1L), .Label = "A", class = "factor"),
Date2 = structure(1:3, .Label = c("2018-01-01", "2018-01-02",
"2018-01-15"), class = "factor")), .Names = c("Name", "Date2"
), class = "data.frame", row.names = c(NA, -3L))