как извлечь переменные из столбца - PullRequest
0 голосов
/ 25 октября 2019
country     continent  year lifeExp      
   <fct>       <fct>     <int>   <dbl>    
 1 Afghanistan Asia       1952    28.8        
 2 Afghanistan Asia       1957    30.3     
 3 Afghanistan Asia       1962    32.0    
 4 Afghanistan Asia       1967    34.0      
 5 Afghanistan Asia       1972    36.1     
 6 Afghanistan Asia       1977    38.4    
 7 Afghanistan Asia       1982    39.9      
 8 Afghanistan Asia       1987    40.8       
 9 Afghanistan Asia       1992    41.7       
10 Afghanistan Asia       1997    41.8

Я хочу напечатать наблюдения для Афганистана, где соответствующие значения для lifeExp равны 41, используя пакеты dplyr и tidyverse.

Я попытался выполнить поднабор, используя $, pull, filter и select.

1 Ответ

0 голосов
/ 25 октября 2019

Вы были на правильном пути с filter(). Причина, по которой вы не получите никаких печатных наблюдений с фильтрацией для lifeExp == 41, заключается в том, что нет наблюдений, которые в точности равны 41:

library(gapminder)
library(dplyr)

data(gapminder)
filter(gapminder, country == "Afghanistan" & lifeExp == 41)
#> # A tibble: 0 x 6
#> # ... with 6 variables: country <fct>, continent <fct>, year <int>,
#> #   lifeExp <dbl>, pop <int>, gdpPercap <dbl>

. Необходимо либо указать диапазон, либо округлить значения передфильтрация:

filter(gapminder, country == "Afghanistan" & lifeExp > 39 & lifeExp < 42)
#> # A tibble: 4 x 6
#>   country     continent  year lifeExp      pop gdpPercap
#>   <fct>       <fct>     <int>   <dbl>    <int>     <dbl>
#> 1 Afghanistan Asia       1982    39.9 12881816      978.
#> 2 Afghanistan Asia       1987    40.8 13867957      852.
#> 3 Afghanistan Asia       1992    41.7 16317921      649.
#> 4 Afghanistan Asia       1997    41.8 22227415      635.

gapminder %>%
  mutate(lifeExp = round(lifeExp)) %>%
  filter(country == "Afghanistan" & lifeExp == 41)
#> # A tibble: 1 x 6
#>   country     continent  year lifeExp      pop gdpPercap
#>   <fct>       <fct>     <int>   <dbl>    <int>     <dbl>
#> 1 Afghanistan Asia       1987      41 13867957      852.
...