如何在R中使用for循环组合多个两个数据集

时间:2017-11-08 00:52:37

标签: r

我有两组数据:

  1. dates其中包含2017年的所有日期
  2. country包含222个国家/地区
  3. 我希望country的每个值在2017年都包含所有dates。我创建了一个for循环,但最终输出只是我列表中的最后一个国家。

    for(i in (1:222)){
      countries <- rep(country[i,1],365)
      final <- cbind(countries,dates)
    }
    

3 个答案:

答案 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)

这将为您提供countrydate的全部因子组合。

但无法确定这是否是解决问题的最佳方法。我觉得如果您不得不多次复制数据,还有其他事情会发生吗?

答案 2 :(得分:0)

使用R base,您可以使用merge()制作笛卡尔积(sql中的cross join

merge(country, dates, all=TRUE)