【发布时间】:2019-11-19 15:06:50
【问题描述】:
在 RStudio 中,我有以下代码:
install(ggplot2)
install(dplyr)
Data is *gapminder_data.csv*
*str(gapminder_data.csv)*
'data.frame': 1704 obs. of 6 variables:
$ country : Factor w/ 142 levels "Afghanistan",..: 1 1 1 1 1 1 1 1 1 1 ...
$ year : int 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...
$ pop : num 8425333 9240934 10267083 11537966 13079460 ...
$ continent: Factor w/ 5 levels "Africa","Americas",..: 3 3 3 3 3 3 3 3 3 3 ...
$ lifeExp : num 28.8 30.3 32 34 36.1 ...
$ gdpPercap: num 779 821 853 836 740 ...
当我执行以下代码时:
gapminder_data.csv %>%
group_by(country) %>%
summarize(min(gdpPercap), max(gdpPercap))
有效:
# A tibble: 142 x 3
country `min(gdpPercap)` `max(gdpPercap)`
<fct> <dbl> <dbl>
1 Afghanistan 635. 978.
2 Albania 1601. 5937.
3 Algeria 2449. 6223.
4 Angola 2277. 5523.
5 Argentina 5911. 12779.
6 Australia 10040. 34435.
7 Austria 6137. 36126.
8 Bahrain 9867. 29796.
9 Bangladesh 630. 1391.
10 Belgium 8343. 33693.
但是,我错过了值的相应年份:
min(gdpPercap) max(gdpPercap)
我该如何解决? 感谢您的帮助。
【问题讨论】:
-
我不完全理解这个问题,因为你没有做任何可以识别相应年份的事情。您的措辞好像应该跟踪具有最小和最大 GDP 的年份,但它们不会
-
当您分组然后汇总时,它会删除该分组未使用的列并汇总。在这种情况下,由于您没有在您的组或汇总中包含年份列,因此它将它们从您的数据集中删除。我会尝试
gapminder_data.csv %>% group_by(country, year) %>% summarize(min(gdpPercap), max(gdpPercap)) -
@HanselPalencia ,我认为这不是 OP 想要的 - 他们想要 gdppercap 为最小值/最大值的年份的值。
year[gdpPercap==min(gdpPercap)之类的东西(虽然我不确定这是否适用于汇总 - 可能需要单独的left_join)。 -
您好,感谢大家的快速答复。如果我在 group_by 中添加“年份” - 这也是我的第一个想法 - 结果是:1 阿富汗 1952 779. 779. 2 阿富汗 1957 821. 821. 3 阿富汗 1962 853. 853. 等等...我想要 1 分钟& 每个国家最多 1 个。缺少这些值的年份。
标签: r date dplyr missing-data