将2个表与公共变量组合但没有共同的观察结果

时间:2017-08-09 12:37:43

标签: r match

我想匹配2个数据集(表格),这些数据集只有一些(并非所有)变量共同但不包含任何这些变量。 - 所以实际上我想将dataset1添加到dataset2,添加dataset2的列名,而在表的空字段中应该用NA填充。 所以我做的是,我尝试了以下功能;

matchcol = function(x,y){
  y = y[,match(colnames(x),colnames(y))]
  colnames(y)=colnames(x)
  return(y)
}


sum =matchcol(dataset1,dataset2)

data = rbind(dataset1,dataset2)

但我得到了; "错误:不支持NA列索引。 我能做什么?我可以在代码中更改什么。

THX !!

2 个答案:

答案 0 :(得分:1)

要使用rbind,您需要使用相同的列名,但如果不使用bind_rows dplyr,请尝试以下操作:

library(dplyr)
data <- bind_rows(dataset1, dataset2)

示例:

dataset1 <- data.frame(a= 1:5,b=6:10)
dataset2 <- data.frame(a= 11:15,c=16:20)
data <- bind_rows(dataset1,dataset2)
#     a  b  c
# 1   1  6 NA
# 2   2  7 NA
# 3   3  8 NA
# 4   4  9 NA
# 5   5 10 NA
# 6  11 NA 16
# 7  12 NA 17
# 8  13 NA 18
# 9  14 NA 19
# 10 15 NA 20

答案 1 :(得分:-1)

如果我理解你的问题,看起来dplyr :: full_join对此有好处:

var options = {
    type: 'bar',
    data: {
        labels: ["1", "2", "3", "4", "5"],
        datasets: [
            {
                borderWidth: 2,
                borderColor: "#5d5d5d",
                pointBorderColor: "#5d5d5d",
                pointBackgroundColor: "#5d5d5d",
                pointBorderWidth: 5,
                type: 'line',
                data: [26, 26, 33, 28, 30],
                fill: false,
                lineTension: 0
            },
            {
                borderWidth: 3,
                pointBorderColor: "#b8b8b8",
                pointBackgroundColor: "#b8b8b8",
                pointBorderWidth: 10,
                type: 'line',
                data: [26, 26, 29, 28, 29],
                fill: false,
                lineTension: 0
            },
            {
                data: [0, 0, 0, 0, 0],
                fill: false,
                lineTension: 0
            }
        ]
    },
    options: {
        hover: {mode: null},
        legend: {
            display: false
        },
        tooltips: {enabled: false},
        hover: {mode: null},
        scales: {
            xAxes: [{
                gridLines: {
                    // drawBorder: false,
                },
            }],
            yAxes: [{
                display: false,
                ticks: {
                    suggestedMin: 0,
                    max: 60,
                    beginAtZero: true
                }
            }]
        }
    }
}

var ctx = document.getElementById(elementID).getContext('2d');
new Chart(ctx, options);

这将按公共列名自动连接两个数据集,并添加两个数据集中的所有其他列。空字段是NA。

这对你有用吗?