基于特定条件重新排列表并使用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)