如何通过列名合并表对象?

时间:2019-02-09 13:24:20

标签: r merge rbind

我们可以使用time_data_from_csv通过列名合并两个数据帧。

time_info = datetime.strptime(time_data_from_csv, '"%m-%d-%Y %H:%M:%S.%f"')

但是我在处理表对象时遇到了意外的困难。

merge()

到目前为止,我的尝试失败了:

d1 <- data.frame(a=9, b=7)
d2 <- data.frame(a=6, b=5, c=5)

merge(d1, d2, all=TRUE)
#   a b  c
# 1 6 5  5
# 2 9 7 NA

这很有效,但是太笨拙了:

t1 <- table(mtcars[1:16, 10])
t2 <- table(mtcars[-(1:16), 10])

预期输出:

# fails
merge(t1, t2, all=TRUE)
merge(t(t1), t(t2), all=TRUE)
merge(as.data.frame(t1), as.data.frame(t2), all=TRUE)
rbind(t1, t2)
data.table::rbindlist(t1, t2)
Reduce(function(x, y) 
  merge(x, y, all=TRUE, by=intersect(names(x), names(y))), list(t1, t2))

我们如何在base R中有效地按列名称合并表对象以获取data.frame?

注意:我可能要问一个重复的问题,但是所谓的“表”解决方案实际上总是与“ data.frame”问题相关联。

1 个答案:

答案 0 :(得分:0)

使用提供的每个表的唯一名称,我们可以使用它们的唯一名称来对表中的每个名称进行子集化。该功能应该扩展为可使用任意数量的表,但我仅使用您的示例数据进行了测试

if (contains(ships[shipIdx],column,row) {...}