R根据列值将行从其他数据帧添加到数据帧
R add rows to dataframe from other dataframe based on column value
在我的论文中,我尝试使用两种类型的调查(英国选举研究 (BES) 和英国社会态度调查 (BSA))中的几个变量,并将它们组合成一个数据集。
目前,我有两个数据集,一个是 BES 数据,看起来像这样(简化版):
| year | class | education | gender | age |
| ---- | ----- | --------- | ------ | --- |
| 1992 | working | A-levels | female | 32 |
| 1992 | middle | GCSE | male | 49 |
| 1997 | lower | Undergrad | female | 24 |
| 1997 | middle | GCSE | male | 29 |
BSA 数据如下所示(再次简化):
| year | class | education | gender | age |
| ---- | ----- | --------- | ------ | --- |
| 1992 | middle | A-levels | male | 22 |
| 1993 | working | GCSE | female | 45 |
| 1994 | upper | Postgrad | female | 38 |
| 1994 | middle | GCSE | male | 59 |
基本上,我想做的是将两者组合成一个数据框,如下所示:
| year | class | education | gender | age |
| ---- | ----- | --------- | ------ | --- |
| 1992 | working | A-levels | female | 32 |
| 1992 | middle | GCSE | male | 49 |
| 1992 | middle | A-levels | male | 22 |
| 1993 | working | GCSE | female | 45 |
| 1994 | upper | Postgrad | female | 38 |
| 1994 | middle | GCSE | male | 59 |
| 1997 | lower | Undergrad | female | 24 |
| 1997 | middle | GCSE | male | 29 |
我在谷歌上搜索了很多关于联接和合并的内容,但我无法以正确的方式找到它。据我了解,我相信我应该“按”年份变量加入,但这是正确的吗?我怎样才能防止它占用大量内存来执行计算(BES 的实际数据集约为 30k,BSA 的实际数据集约为 130k)?是否有在 R 中使用 dplyr 或 data.tables 的解决方案?
非常感谢任何帮助!!!
这不是“合并”(或连接)操作,它只是行串联。在 R 中,这是通过 rbind
完成的(使用不同的方法对 matrix
和 data.frame
有效)。 (为了透视,还有 cbind
,按列连接。此处不适用。)
基础 R
rbind(BES, BSA)
# year class education gender age
# 1 1992 working A-levels female 32
# 2 1992 middle GCSE male 49
# 3 1997 lower Undergrad female 24
# 4 1997 middle GCSE male 29
# 5 1992 middle A-levels male 22
# 6 1993 working GCSE female 45
# 7 1994 upper Postgrad female 38
# 8 1994 middle GCSE male 59
其他方言
dplyr::bind_rows(BES, BSA)
data.table::rbindlist(list(BES, BSA))
在我的论文中,我尝试使用两种类型的调查(英国选举研究 (BES) 和英国社会态度调查 (BSA))中的几个变量,并将它们组合成一个数据集。 目前,我有两个数据集,一个是 BES 数据,看起来像这样(简化版):
| year | class | education | gender | age |
| ---- | ----- | --------- | ------ | --- |
| 1992 | working | A-levels | female | 32 |
| 1992 | middle | GCSE | male | 49 |
| 1997 | lower | Undergrad | female | 24 |
| 1997 | middle | GCSE | male | 29 |
BSA 数据如下所示(再次简化):
| year | class | education | gender | age |
| ---- | ----- | --------- | ------ | --- |
| 1992 | middle | A-levels | male | 22 |
| 1993 | working | GCSE | female | 45 |
| 1994 | upper | Postgrad | female | 38 |
| 1994 | middle | GCSE | male | 59 |
基本上,我想做的是将两者组合成一个数据框,如下所示:
| year | class | education | gender | age |
| ---- | ----- | --------- | ------ | --- |
| 1992 | working | A-levels | female | 32 |
| 1992 | middle | GCSE | male | 49 |
| 1992 | middle | A-levels | male | 22 |
| 1993 | working | GCSE | female | 45 |
| 1994 | upper | Postgrad | female | 38 |
| 1994 | middle | GCSE | male | 59 |
| 1997 | lower | Undergrad | female | 24 |
| 1997 | middle | GCSE | male | 29 |
我在谷歌上搜索了很多关于联接和合并的内容,但我无法以正确的方式找到它。据我了解,我相信我应该“按”年份变量加入,但这是正确的吗?我怎样才能防止它占用大量内存来执行计算(BES 的实际数据集约为 30k,BSA 的实际数据集约为 130k)?是否有在 R 中使用 dplyr 或 data.tables 的解决方案?
非常感谢任何帮助!!!
这不是“合并”(或连接)操作,它只是行串联。在 R 中,这是通过 rbind
完成的(使用不同的方法对 matrix
和 data.frame
有效)。 (为了透视,还有 cbind
,按列连接。此处不适用。)
基础 R
rbind(BES, BSA)
# year class education gender age
# 1 1992 working A-levels female 32
# 2 1992 middle GCSE male 49
# 3 1997 lower Undergrad female 24
# 4 1997 middle GCSE male 29
# 5 1992 middle A-levels male 22
# 6 1993 working GCSE female 45
# 7 1994 upper Postgrad female 38
# 8 1994 middle GCSE male 59
其他方言
dplyr::bind_rows(BES, BSA)
data.table::rbindlist(list(BES, BSA))