保持两个数据帧';自身值仅在R中的交点处替换

保持两个数据帧';自身值仅在R中的交点处替换,r,dataframe,R,Dataframe,假设我有以下两个数据帧,我想使用merge函数合并它们 > x <- data.frame(id=c("a", "b", "c"), type=c("good", "ok", "not-ok")) > y <- data.frame(id=c("b", "d"), type=c("ok", "good"), kind=c("A", "B")) > merge(x, y, by.x="id", by.y="id", all=TRUE) id type.x type

假设我有以下两个数据帧,我想使用
merge
函数合并它们

> x <- data.frame(id=c("a", "b", "c"), type=c("good", "ok", "not-ok"))
> y <- data.frame(id=c("b", "d"), type=c("ok", "good"), kind=c("A", "B"))
> merge(x, y, by.x="id", by.y="id", all=TRUE)
  id type.x type.y kind
1  a   good   <NA> <NA>
2  b     ok     ok    A
3  c not-ok   <NA> <NA>
4  d   <NA>   good    B
>x-y合并(x,y,by.x=“id”,by.y=“id”,all=TRUE)
id类型.x类型.y类型
a好的
好的好的
3 c不好
好的
我想要的是

  id   type    kind
1  a   good    <NA>
2  b     ok       A
3  c not-ok    <NA>
4  d   good       B
id类型类型
a好的
b好的
3 c不好
好的
请问,有没有一个很好的方法可以在R做这件事?谢谢。

在Base R中:

merge(x, y, all = TRUE)
使用
tidyverse

首先,在创建数据帧时添加以下内容:

x <- data.frame(id=c("a", "b", "c"), type=c("good", "ok", "not-ok"),
                stringsAsFactors = FALSE)

y <- data.frame(id=c("b", "d"), type=c("ok", "good"), kind=c("A", "B"),
                stringsAsFactors = FALSE)
根据@markus的评论进行编辑。

以R为基础:

merge(x, y, all = TRUE)
使用
tidyverse

首先,在创建数据帧时添加以下内容:

x <- data.frame(id=c("a", "b", "c"), type=c("good", "ok", "not-ok"),
                stringsAsFactors = FALSE)

y <- data.frame(id=c("b", "d"), type=c("ok", "good"), kind=c("A", "B"),
                stringsAsFactors = FALSE)
根据@markus的评论编辑。

简单

library(dplyr)

x %>% full_join(y, by  = c("id", "type"))

  id   type    kind
1  a   good    <NA>
2  b     ok       A
3  c not-ok    <NA>
4  d   good       B
库(dplyr)
x%>%full_join(y,by=c(“id”,“type”))
id类型种类
a好的
b好的
3 c不好
好的
简单

库(dplyr)
x%>%full_join(y,by=c(“id”,“type”))
id类型种类
a好的
b好的
3 c不好
好的

您的解决方案有什么问题?nice是什么意思?请尝试
merge(x,y,all=TRUE)
您的解决方案有什么问题?你说尼斯是什么意思?试试
merge(x,y,all=TRUE)