我可以对分组数据框使用不同的 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)