我可以对分组数据框使用不同的 method/function 吗?
Can I use a different method/function for grouped dataframe?
我一直在关注一个教程,其中有人试图将数据从 wbstats 提取到数据框(国内生产总值数据)。
我认为最后一段代码有问题,因为我已经安装了所有必需的库(tidyverse、wbstats、data.table、plotly、psych、highcharter、quantmod、TTR、reshape2) .
population <- wb('SP.POP.TOTL', country = 'countries_only') %>%
mutate(date = as.numeric(date), value = round(value / 1000000, 2), indicator = 'Population') %>%
select(-indicatorID)
gdp <- wb('NY.GDP.PCAP.CD', country = 'countries_only') %>%
mutate(date = as.numeric(date), value = round(value, 2), indicator = 'GDP per Capita') %>%
select(-indicatorID)
lifeexpectancy <- wb('SP.DYN.LE00.IN', country = 'countries_only') %>%
mutate(date = as.numeric(date), value = round(value, 2), indicator = 'Life Expectancy') %>%
select(-indicatorID)
df <- gdp %>%
rbind(lifeexpectancy) %>%
rbind(population) %>%
data.table::dcast(... ~ indicator, value.var = 'value') %>%
na.omit()
这是最后一个代码段的错误:
显示在新的Window
wb()
在 wbstats 1.0.0 中被弃用。
请改用 wb_data()
。wb()
在 wbstats 1.0.0 中已弃用。
请改用 wb_data()
。wb()
在 wbstats 1.0.0 中已弃用。
请在 data.table 中使用 wb_data()
instead.The dcast generic 已通过 data.frame 并将尝试重定向到 reshape2::dcast;请注意,reshape2 已弃用,此重定向现在也已弃用。请像 reshape2::dcast(.) 一样自己做这个重定向。在下一个版本中,这个警告将变成一个错误。
问题是,当我实际尝试为 wb_data 修改 wb 时,它立即 returns 给我一个突变值 [rlang::last_error()
] 的错误。我真的很想使用这个功能,但也许 tidyr 有更好的方法。有什么想法吗?
如果我们需要整洁的版本,而不是 rbind
,请使用 bind_rows
,然后将 dcast
更改为 pivot_wider
library(dplyr)
library(tidyr)
library(data.table)
df <- gdp %>%
bind_rows(., lifeexpectancy, population) %>%
mutate(rn = rowid(indicator)) %>% # in case of any duplicates
tidyr::pivot_wider(names_from = 'indicator', values_from = 'value') %>%
na.omit() %>%
select(-rn)
我一直在关注一个教程,其中有人试图将数据从 wbstats 提取到数据框(国内生产总值数据)。
我认为最后一段代码有问题,因为我已经安装了所有必需的库(tidyverse、wbstats、data.table、plotly、psych、highcharter、quantmod、TTR、reshape2) .
population <- wb('SP.POP.TOTL', country = 'countries_only') %>%
mutate(date = as.numeric(date), value = round(value / 1000000, 2), indicator = 'Population') %>%
select(-indicatorID)
gdp <- wb('NY.GDP.PCAP.CD', country = 'countries_only') %>%
mutate(date = as.numeric(date), value = round(value, 2), indicator = 'GDP per Capita') %>%
select(-indicatorID)
lifeexpectancy <- wb('SP.DYN.LE00.IN', country = 'countries_only') %>%
mutate(date = as.numeric(date), value = round(value, 2), indicator = 'Life Expectancy') %>%
select(-indicatorID)
df <- gdp %>%
rbind(lifeexpectancy) %>%
rbind(population) %>%
data.table::dcast(... ~ indicator, value.var = 'value') %>%
na.omit()
这是最后一个代码段的错误:
显示在新的Window
wb()
在 wbstats 1.0.0 中被弃用。
请改用 wb_data()
。wb()
在 wbstats 1.0.0 中已弃用。
请改用 wb_data()
。wb()
在 wbstats 1.0.0 中已弃用。
请在 data.table 中使用 wb_data()
instead.The dcast generic 已通过 data.frame 并将尝试重定向到 reshape2::dcast;请注意,reshape2 已弃用,此重定向现在也已弃用。请像 reshape2::dcast(.) 一样自己做这个重定向。在下一个版本中,这个警告将变成一个错误。
问题是,当我实际尝试为 wb_data 修改 wb 时,它立即 returns 给我一个突变值 [rlang::last_error()
] 的错误。我真的很想使用这个功能,但也许 tidyr 有更好的方法。有什么想法吗?
如果我们需要整洁的版本,而不是 rbind
,请使用 bind_rows
,然后将 dcast
更改为 pivot_wider
library(dplyr)
library(tidyr)
library(data.table)
df <- gdp %>%
bind_rows(., lifeexpectancy, population) %>%
mutate(rn = rowid(indicator)) %>% # in case of any duplicates
tidyr::pivot_wider(names_from = 'indicator', values_from = 'value') %>%
na.omit() %>%
select(-rn)