Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何合并两列中的值?_R_Merge - Fatal编程技术网

R:如何合并两列中的值?

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”上进行连接:

(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    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