【发布时间】:2019-06-19 17:34:19
【问题描述】:
假设我有两个数据集 df1 和 df2 如下:
df1 <- data.frame(Id = c(1L,2L,3L,4L,5L,6L,7L,8L), pricetag = c("na","na","na","na","na","na","na","na"),stringsAsFactors=F)
df2 <- data.frame(Id=c(1L,2L,3L,4L), price = c(10,20,30,40), stringsAsFactors=F)
> df1
Id pricetag
1 1 na
2 2 na
3 3 na
4 4 na
5 5 na
6 6 na
7 7 na
8 8 na
> df2
Id price
1 1 10
2 2 20
3 3 30
4 4 40
我正在尝试通过使用此函数匹配 id 将价格值从 df2 插入 df1。
df1$pricetag <- df2$price[match(df1$Id, df2$Id)]
提供这个:
> df1
Id pricetag
1 1 10
2 2 20
3 3 30
4 4 40
5 5 NA
6 6 NA
7 7 NA
8 8 NA
我有第三个数据集。我正在尝试遵循相同的程序。
df3 <- data.frame(Id=c(5L,6L,7L,8L), price=c(50,60,70,80),stringsAsFactors=F)
> df3
Id price
1 5 50
2 6 60
3 7 70
4 8 80
df1$pricetag <- df3$price[match(df1$Id, df3$Id)]
> df1
Id pricetag
1 1 NA
2 2 NA
3 3 NA
4 4 NA
5 5 50
6 6 60
7 7 70
8 8 80
但是,它会覆盖 df1 中来自 df2 的价格信息。当我复制相同的过程时,有什么方法可以关闭此选项?
【问题讨论】: