我想匹配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 !!
答案 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。
这对你有用吗?