合并仅包含一个重复列的两个数据集

时间:2017-12-28 06:14:37

标签: r dataframe

我正在尝试合并两个数据集,如此

V1
 Berry

作为第一个数据集和

V4   V6    V7   V1
Temp Temp  Temp Temp

制作

V4   V6    V7   V1
Temp Temp  Temp Temp
NA   NA    NA    Berry

我尝试过使用

test2<-merge(Session1t, temp2, by=temp1, all = TRUE)

其中temp1是存储为值的列名V1。我遇到的问题是我无法通过=“V1”明确说明,因为这是一个循环内部,每个迭代的列名称都会发生变化,我不确定如何有效地合并这两个数据集。我得到的最接近的是合并它们会创建两个V1列,但这显然不是我可以使用的东西。

1 个答案:

答案 0 :(得分:0)

我们可以使用包中的bind_rows函数。

# Create example data frame D1
D1 <- read.table(text = "V1
 Berry",
                 header = TRUE, stringsAsFactors = FALSE)

# Create example data frame D2
D2 <- read.table(text = "V4   V6    V7   V1
                 Temp Temp  Temp Temp",
                 header = TRUE, stringsAsFactors = FALSE)

# Load package
library(dplyr)

# Combine two data frames
D3 <- bind_rows(D2, D1)

D3
#     V4   V6   V7    V1
# 1 Temp Temp Temp  Temp
# 2 <NA> <NA> <NA> Berry

我们也可以使用基础R中的rbind函数,它类似于bind_rows,但我们需要创建不在D1D2中的列NA 1}}首先。

# Get columns not match
NACol <- setdiff(names(D2), names(D1))

# Create columns based on NACol with NA
for (i in NACol){
  D1[[i]] <- NA
}

# Combine tow data frames
D3 <- rbind(D2, D1)
D3
#     V4   V6   V7    V1
# 1 Temp Temp Temp  Temp
# 2 <NA> <NA> <NA> Berry