#r #dataframe #tidyverse
#r #фрейм данных #tidyverse
Вопрос:
Я новичок в R и работаю с набором данных gapminder, чтобы опробовать некоторые графики.
Этот набор данных является последними загруженными данными gapminder website
, которые возвращают мне error on mutate
where, поскольку gapminder
данные из library(gapminder)
этого не поступают.
df: gapminder_new
gapminder_new %>%
select(country, "2010", "2019") %>% head()
############## output ################
country 2010 2019
<chr> <dbl> <dbl>
Afghanistan 543 571
Albania 4090 5210
Algeria 4480 4710
Andorra 40900 45900
Angola 3590 3100
Antigua and Barbuda 13000 15700
Ошибка: ошибка при вычитании значений столбцов за год в gapminder_new
df:
gapminder_new %>%
select(country, "2010", "2019") %>%
mutate(gap = "2019" - "2010") %>% head()
Error: Problem with `mutate()` input `gap`. x non-numeric argument to binary operator i Input `gap` is `"2019" - "2010"`. Run `rlang::last_error()` to see where the error occurred.
Но странная вещь, когда я использую gapminder data
from library
, а shaped to similar wider format
затем у этого нет проблем:
df: библиотека (gapminder), тогда это работает
library(gapminder)
gapminder %>%
filter(year == 1967 | year == 2007) %>%
select(country, year, lifeExp) %>%
spread(year, lifeExp) %>%
mutate(gap = `2007` - `1967`) %>% head()
#################### output #########################
country 1967 2007 gap
<fctr> <dbl> <dbl> <dbl>
Afghanistan 34.020 43.828 9.808
Albania 66.220 76.423 10.203
Algeria 51.407 72.301 20.894
Angola 35.985 42.731 6.746
Argentina 65.634 75.320 9.686
Оба набора данных выглядят одинаково, и я пытаюсь учесть разницу в годах, которая есть dbl
во всех случаях, но она работает в одном случае, а не в другом.
Что здесь происходит, где я ошибаюсь и как мне это исправить?
Иногда эти небольшие проблемы с возвратами типов данных, которые визуально выглядят одинаково в R фреймах данных, действительно расстраивают.
Было нетрудно перейти с excel на python, как, похоже, при переходе с Python на R.
Ответ №1:
теперь он работает с использованием mutate(gap = .[["2019"]] - .[["2010"]] ) %>% head()
, но я до сих пор не знаю, почему это требуется для работы в new gapminder dataset
where, поскольку мне не нужно было использовать эту форму с library(gapminder)
dataset