我有两组数据:
dates
其中包含2017年的所有日期country
包含222个国家/地区我希望country
的每个值在2017年都包含所有dates
。我创建了一个for循环,但最终输出只是我列表中的最后一个国家。
for(i in (1:222)){
countries <- rep(country[i,1],365)
final <- cbind(countries,dates)
}
答案 0 :(得分:1)
您可以使用tidyverse
tibble
,列表列和unnest
库(tidyverse)
tibble(country = country,
dates = list(dates)) %>%
unnest()
答案 1 :(得分:0)
要回答您的具体问题,我会使用expand.grid():
dates = seq(as.Date('2017-01-01'), as.Date('2017-01-04'), by = 'days')
country = c('usa', 'brazil', 'austalia', 'sweden')
dates_country = setNames(expand.grid(dates, country), c('dates', 'country'))
# create list of dataframes by country for further manipulation
split(dates_country, dates_country$country)
这将为您提供country
和date
的全部因子组合。
但无法确定这是否是解决问题的最佳方法。我觉得如果您不得不多次复制数据,还有其他事情会发生吗?
答案 2 :(得分:0)
使用R base,您可以使用merge()
制作笛卡尔积(sql中的cross join
)
merge(country, dates, all=TRUE)