如何在不匹配元素的情况下将数据集与某些相同的列合并,而是将它们添加到向量中?
How do I merge data sets with some of the same columns without matching the elements but rather adding them to the vector?
我一直在尝试合并在不同年份从不同人那里获得的横截面数据集。
对于数据 collection,大多数相同的问题每年都会被问到,但有些问题会被添加或删除。因此,有一些变量在数据集中匹配,而另一些变量不匹配但仍然很重要。
有一点可能对大家来说很重要,那就是每年有不同数量的受访者。因此,并非所有变量的每个匹配变量都具有相同数量的元素。
对于上下文,我正在尝试合并三个数据集。但为了简单起见,我将用 3 个中的 2 个来说明我的以下示例。
我已经尝试使用 all = TRUE 的 match() 函数,但我使用此函数创建的数据集从我想要堆叠的向量中提取了 3 个向量。例如
internet.x internet.y internet.z
3 3 7
6 4 5
我也尝试过 plyr 包中的 rbind() 函数,但这种合并模式会删除没有匹配元素的列。
例如,因为 data: year2017 和 data:year2018 都有一个变量标题 YEAR 例如
data:year2017 data:year2018
YEAR YEAR
2017 2018
2017 2018
2017 2018
2017 2018
2017 2018
2017 2018
2017 2018
2017 2018
YEAR 变量在合并产品中被删除,因为同一变量在不同数据集中具有不同的值或元素。
所以...我想在最终产品中保留的是
的合并结果
data:MERGED
YEAR
2017
2017
2017
2017
2017
2017
2017
2017
2018
2018
2018
2018
2018
2018
2018
2018
另一个例子是下面的variable = var1,它在数据集
中被命名为相同的
data:year2016 data:year2017 data:year2018
var1 var1 var1
3 5 2
2 3 1
4 7 7
5 8 3
6 3 4
理想情况下生成的产品将是
data:MERGEDFINAL
var1
3
2
4
5
6
5
3
7
8
3
2
1
7
3
4
我希望发生的是,对于跨数据集相同的所有变量,应该进行堆叠操作。对于不相同的变量,那么仍然应该进行堆叠,但对于在没有为该变量收集数据的那一年参加调查的受访者,用 NA 打包。
如果你们都能集思广益,帮助我解决这个问题,那就太好了:):):)
dplyr
库中的 bind_rows()
函数正是您所需要的!要'merge'三个数据集合二为一,同时尊重列名,使用如下命令:
library(dplyr)
dfAll<-bind_rows(dfA, dfB, dfC)
编辑:更新,直接调用所有三个数据集。删除了第一次发布的中间步骤。
我一直在尝试合并在不同年份从不同人那里获得的横截面数据集。
对于数据 collection,大多数相同的问题每年都会被问到,但有些问题会被添加或删除。因此,有一些变量在数据集中匹配,而另一些变量不匹配但仍然很重要。
有一点可能对大家来说很重要,那就是每年有不同数量的受访者。因此,并非所有变量的每个匹配变量都具有相同数量的元素。
对于上下文,我正在尝试合并三个数据集。但为了简单起见,我将用 3 个中的 2 个来说明我的以下示例。
我已经尝试使用 all = TRUE 的 match() 函数,但我使用此函数创建的数据集从我想要堆叠的向量中提取了 3 个向量。例如
internet.x internet.y internet.z
3 3 7
6 4 5
我也尝试过 plyr 包中的 rbind() 函数,但这种合并模式会删除没有匹配元素的列。
例如,因为 data: year2017 和 data:year2018 都有一个变量标题 YEAR 例如
data:year2017 data:year2018
YEAR YEAR
2017 2018
2017 2018
2017 2018
2017 2018
2017 2018
2017 2018
2017 2018
2017 2018
YEAR 变量在合并产品中被删除,因为同一变量在不同数据集中具有不同的值或元素。
所以...我想在最终产品中保留的是
的合并结果 data:MERGED
YEAR
2017
2017
2017
2017
2017
2017
2017
2017
2018
2018
2018
2018
2018
2018
2018
2018
另一个例子是下面的variable = var1,它在数据集
中被命名为相同的 data:year2016 data:year2017 data:year2018
var1 var1 var1
3 5 2
2 3 1
4 7 7
5 8 3
6 3 4
理想情况下生成的产品将是
data:MERGEDFINAL
var1
3
2
4
5
6
5
3
7
8
3
2
1
7
3
4
我希望发生的是,对于跨数据集相同的所有变量,应该进行堆叠操作。对于不相同的变量,那么仍然应该进行堆叠,但对于在没有为该变量收集数据的那一年参加调查的受访者,用 NA 打包。
如果你们都能集思广益,帮助我解决这个问题,那就太好了:):):)
dplyr
库中的 bind_rows()
函数正是您所需要的!要'merge'三个数据集合二为一,同时尊重列名,使用如下命令:
library(dplyr)
dfAll<-bind_rows(dfA, dfB, dfC)
编辑:更新,直接调用所有三个数据集。删除了第一次发布的中间步骤。