【发布时间】:2022-01-11 16:26:41
【问题描述】:
我有两个 data.tables。一个 data.table (dt1) 包含个人来自(国家)和个人出生时间(日期)的信息。另一个 data.table (dt2) 包含每个国家和每年的索引。
dt1 <- data.table(country=c("Argentina", "Brazil", "United States"),
date = c("2012-25-12", "2015-21-05", "2017-01-06"))
dt2 <- data.table(country=c("Argentina", "Brazil", "United States"),
"2012" = c(0.25, 0.85, 0.11),
"2013" = c(0.43, 0.23, 0.95),
"2014" = c(0.35, 0.45, 0.66),
"2015" = c(0.45, 0.63, 0.45),
"2016" = c(0.78, 0.54, 0.22),
"2017" = c(0.22, 0.22, 0.32))
我想将一个 data.table (dt2) 的信息添加到另一个 data.table (dt1) 中,具体取决于年份和国家/地区。
我尝试了一个 for 循环
years <- as.character(2012:2017)
for(i in 1:length(years)){
for(j in countries)
{dt1[country==j & date <=as.Date(paste0(years[i], "-12-31")), index:=dt2[country==(j), (1+i)]]
}
}
我希望 dt1 看起来像这样:
country date index
1: Argentina 2012-12-25 0.25
2: Brazil 2015-05-21 0.63
3: United States 2017-01-06 0.32
相反,dt1 看起来像这样:
country date index
1: Argentina 2012-12-25 7
2: Brazil 2015-05-21 7
3: United States 2017-01-06 7
即索引等于最后的1+i,即循环的第6次迭代
我需要更改什么,以便 index 实际上是 dt2 中满足国家和年份条件的元素?
感谢任何帮助和反馈,如果这个问题缺乏清晰度或可重复性。 谢谢
【问题讨论】:
标签: r loops data.table