将数据集中的一列添加到 R 中的另一个数据集
add a column from a dataset to another dataset in R
假设我有两个数据集
ds1
NO ID DOB ID2 count
1 4083 2007-10-01 3625 5
2 4408 2008-07-01 3603 2
3 4514 2007-07-01 3077 3
4 4396 2008-05-01 3413 5
5 4222 2003-12-01 3341 1
ds2
loc share
12 445
23 4
10 56
1 1
23 34
我想将 ds2 的 "share" 列添加到 ds1,这样它看起来像
合并
NO ID DOB ID2 count share
1 4083 2007-10-01 3625 5 445
2 4408 2008-07-01 3603 2 4
3 4514 2007-07-01 3077 3 56
4 4396 2008-05-01 3413 5 1
5 4222 2003-12-01 3341 1 34
我试过合并为
dsmerged <- merge(ds1[c(1:5)],ds2[c(2)])
但它所做的是在添加 "share" 列的同时复制数据集(5*5=25 行)。我显然不想要重复的值。谢谢
如果你知道这些行代表相同的 id 那么你可以 cbind
ds3 <- cbind(ds1, share = ds2$share)
不过要是有id就更好了
使用dplyr
library(dplyr)
bind_cols(ds1, ds2['share'])
或者用data.table
setDT(ds1)[, share := ds2[["share"]]]
假设我有两个数据集
ds1
NO ID DOB ID2 count
1 4083 2007-10-01 3625 5
2 4408 2008-07-01 3603 2
3 4514 2007-07-01 3077 3
4 4396 2008-05-01 3413 5
5 4222 2003-12-01 3341 1
ds2
loc share
12 445
23 4
10 56
1 1
23 34
我想将 ds2 的 "share" 列添加到 ds1,这样它看起来像
合并
NO ID DOB ID2 count share
1 4083 2007-10-01 3625 5 445
2 4408 2008-07-01 3603 2 4
3 4514 2007-07-01 3077 3 56
4 4396 2008-05-01 3413 5 1
5 4222 2003-12-01 3341 1 34
我试过合并为 dsmerged <- merge(ds1[c(1:5)],ds2[c(2)])
但它所做的是在添加 "share" 列的同时复制数据集(5*5=25 行)。我显然不想要重复的值。谢谢
如果你知道这些行代表相同的 id 那么你可以 cbind
ds3 <- cbind(ds1, share = ds2$share)
不过要是有id就更好了
使用dplyr
library(dplyr)
bind_cols(ds1, ds2['share'])
或者用data.table
setDT(ds1)[, share := ds2[["share"]]]