R:如何合并两列中的值?
我正在尝试进行外部连接以合并两个数据集。在这里,我在字段“id”上进行连接: (id确定“lat”字段中的值。) 我的问题是:现在如何合并列“lat.x”和“lat.y”?我只需要一列,比如“lat.x”,非NA值如下:R:如何合并两列中的值?,r,merge,R,Merge,我正在尝试进行外部连接以合并两个数据集。在这里,我在字段“id”上进行连接: (id确定“lat”字段中的值。) 我的问题是:现在如何合并列“lat.x”和“lat.y”?我只需要一列,比如“lat.x”,非NA值如下: id lat.x B lat.y A 1 1 45 NA 45 100 2 2 45 NA 45 101 3 3 45 212 NA NA 4 4 46 212 46 100 5 5 46 211
id lat.x B lat.y A
1 1 45 NA 45 100
2 2 45 NA 45 101
3 3 45 212 NA NA
4 4 46 212 46 100
5 5 46 211 46 122
6 6 46 NA 46 121
非常感谢,,
Bill在我们
合并使用OP帖子中的代码的数据集后,使用pmax
或rowMeans
转换lat.x列
res <- merge(df_01, df_02, by="id", all=TRUE)
res1 <- transform(res, lat.x= pmax(lat.x, lat.y, na.rm=TRUE))
res1
# id lat.x B lat.y A
#1 1 45 NA 45 100
#2 2 45 NA 45 101
#3 3 45 212 NA NA
#4 4 46 212 46 100
#5 5 46 211 46 122
#6 6 46 NA 46 121
我喜欢plyr()库中的join()
require(plyr)
df_03我认为您需要做的就是通过
参数将c(“id”,“lat”)
作为参数传递给
df_01
## id lat B
## 1 3 45 212
## 2 4 46 212
## 3 5 46 211
df_02
## id lat A
## 1 1 45 100
## 2 2 45 101
## 3 4 46 100
## 4 5 46 122
## 5 6 46 121
merge(df_01, df_02, by = c("id", "lat"), all = TRUE)
## id lat B A
## 1 1 45 NA 100
## 2 2 45 NA 101
## 3 3 45 212 NA
## 4 4 46 212 100
## 5 5 46 211 122
## 6 6 46 NA 121
感谢oshun、akrun和Chinmay的快速响应和三种不同的方法-所有这些方法都很有效!
transform(res, lat.x= rowMeans(cbind(lat.x,lat.y), na.rm=TRUE))
require(plyr)
df_03 <- join(df_01, df_02, by="id", type="full")
df_03 <- df_03[order(df_03$id),] #Optional sorting by id
df_03
# id lat B A
#4 1 45 NA 100
#5 2 45 NA 101
#1 3 45 212 NA
#2 4 46 212 100
#3 5 46 211 122
#6 6 46 NA 121
df_01
## id lat B
## 1 3 45 212
## 2 4 46 212
## 3 5 46 211
df_02
## id lat A
## 1 1 45 100
## 2 2 45 101
## 3 4 46 100
## 4 5 46 122
## 5 6 46 121
merge(df_01, df_02, by = c("id", "lat"), all = TRUE)
## id lat B A
## 1 1 45 NA 100
## 2 2 45 NA 101
## 3 3 45 212 NA
## 4 4 46 212 100
## 5 5 46 211 122
## 6 6 46 NA 121