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 完成的(使用不同的方法对 matrixdata.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))