基于特定条件重新排列表并使用for循环

基于特定条件重新排列表并使用for循环,r,R,我将直接从代码开始,这应该清楚地说明目标是什么: library(gapminder) head(gapminder) # A tibble: 6 x 6 country continent year lifeExp pop gdpPercap <fct> <fct> <int> <dbl> <int> <dbl> 1 Afghanistan

我将直接从代码开始,这应该清楚地说明目标是什么:

library(gapminder)    
head(gapminder)

    # A tibble: 6 x 6
  country     continent  year lifeExp      pop gdpPercap
  <fct>       <fct>     <int>   <dbl>    <int>     <dbl>
1 Afghanistan Asia       1952    28.8  8425333      779.
2 Afghanistan Asia       1957    30.3  9240934      821.
3 Afghanistan Asia       1962    32.0 10267083      853.
4 Afghanistan Asia       1967    34.0 11537966      836.
5 Afghanistan Asia       1972    36.1 13079460      740.
6 Afghanistan Asia       1977    38.4 14880372      786.
此代码试图分配行中每个
年份
对应的
pop
值,列的名称是其对应的
国家
。代码中未使用
年份
,因为我稍后会添加值,现在只需根据条件选择
国家
pop
值。由于此表中的年份是重复的,我希望该列只出现一次(稍后)。因此,最终的表必须是12*143表(12行143列)。这不起作用

有什么想法吗?如果需要的话,我也将非常感谢您对设计和结构的任何建议。

我想这就是您想要的:

gapminder %>%
    select(country, pop, year) %>%
    spread(country, pop)
这将为您每年提供一行,每个国家提供一列,其中包含该年的人口


spread
是{tidyr}包的一部分。)

可能重复Hey,编辑问题以使其更清楚。这里的要求有点不同。
for(i in 1:length(y)){
  d.frame[,i] <- gapminder$pop %>% filter(gapminder$country==y[i])
  assign(df.names[i], d.frame)
} 
gapminder %>%
    select(country, pop, year) %>%
    spread(country, pop)