我发布了这个问题about replacing data in a data.frame,并试图将tyluRp提出的解决方案用于我的数据,但后来又遇到了另一个问题。
我的示例数据,
df1 <- data.frame(
c(rep("AFG", 3), rep("AUS", 3)),
rep(c("a", "b", "c"), 2),
rep(0, 6),
rep(0, 6),
othr = c(10:15),
stringsAsFactors = FALSE
)
colnames(df1) <- c("Country", "Category", "2000", "2001", "Oth")
df2 <- data.frame(
rep("AFG", 2),
c("a", "b"),
c(7, 8),
c(1, 2),
stringsAsFactors = FALSE)
)
colnames(df2) <- c("Country", "Category", "2000", "2001")
建议的解决方案适用于2000年,df1
中的某些值已替换为df2
:
library(data.table)
dt1 <- setDT(df1)
dt2 <- setDT(df2)
desirable_output <- dt1[dt2, on = c("Country", "Category"), as.character(2000) := i.2000]
但我无法计算这两年的计算结果, 我的尝试:
years <- c(2000:2001)
for(i in years){
desirable_output <- dt1[dt2, on = c("Country", "Category"), as.character(i) := paste("i.", years, sep="")]
}
我怎么能解决这种情况?我对:=
缺少什么?
提前致谢!
答案 0 :(得分:0)
有限的,少量的列的一种方法
dt1[dt2, on = c("Country", "Category"), `:=` (`2000` = i.2000, `2001` = i.2001)][]