使用另一列中的一组值多次替换列中的一组值

时间:2017-03-17 10:05:58

标签: r

mydata = data.frame(year=rep(2000:2010,10), values1=rep(letters[1:5],22))
mydata1 = data.frame(year=c(2005:2009),values2=letters[5:9])

我想将mydata$values1(2005:2009)的所有mydata$year替换为mydata1$values2中的值。这必须多次执行,因为(2005:2009)在mydata$year中重复出现。怎么办呢?

2 个答案:

答案 0 :(得分:1)

我们可以加入on'年'并分配(:=)值

library(data.table)
setDT(mydata)[mydata1, values1 := values2, on = .(year)]

答案 1 :(得分:1)

这是一个基础R

的解决方案
mydata = data.frame(year=rep(2000:2010,10), values1=rep(letters[1:5],22), stringsAsFactors = FALSE)
mydata1 = data.frame(year=c(2005:2009),values2=letters[10:14], stringsAsFactors = FALSE)

m <- merge(mydata, mydata1, all.x=TRUE)
m$values1 <- ifelse(is.na(m$values2), m$values1, m$values2)

对于最后一行,我们可以写:

i <- !is.na(m$values2)
m$values1[i] <- m$values2[i]
相关问题