![](/img/trans.png)
[英]How to add a column to a dataframe based on the value of two other columns? 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 |
基本上,我要做的是將兩者組合成一個 dataframe,如下所示:
| 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 |
我在谷歌上搜索了很多關於連接和合並的信息,但我無法以正確的方式解決它。 據我了解,我相信我應該“按”年份變量加入,但這是正確的嗎? 我怎樣才能防止它占用大量 memory 來執行計算(BES 的實際數據集約為 30k,BSA 的實際數據集約為 130k)? 是否有使用 dplyr 或 R 中的 data.tables 的解決方案?
任何幫助深表感謝!!!
這不是“合並”(或連接)操作,它只是行連接。 在 R 中,這是通過rbind
完成的(它使用不同的方法適用於matrix
和data.frame
)。 (為了透視,還有cbind
,它按列連接。此處不適用。)
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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.