Почему is.double () возвращает фактор-переменную? - PullRequest
1 голос
/ 01 апреля 2020

Функция is.double() возвращает переменные factor. Вот код и его вывод:

df <- data.frame(City = c("A","B","A","C","A","B"), 
Empl = c(3,6,3,2,6,8), UnEmpl = c(4,7,5,6,3,1))

select_if(df, is.double)

Это то, что мы получаем, возвращаются все double переменные:

Empl UnEmpl
<dbl> <dbl>
3   4           
6   7           
3   5           
2   6           
6   3           
8   1   

после некоторых операций

df <- df %>% group_by(City) %>% mutate(total = sum(Empl,UnEmpl))
select_if(df, is.double)

Это то, что мы получаем, city является переменной factor, но все еще возвращается функцией is.double()

City    Empl  UnEmpl total
<fctr>  <dbl> <dbl>  <dbl>
A   3   4   24  
B   6   7   22  
A   3   5   24  
C   2   6   8   
A   6   3   24  
B   8   1   22

1 Ответ

0 голосов
/ 01 апреля 2020

ОБНОВЛЕНИЕ

В документации select_if() прямо говорится, что группирующие переменные всегда сохраняются. Вы также можете проверить эту страницу Github от авторов dplyr . В конце концов, разгруппировка нового df с ungroup() делает свое дело.

library(dplyr)
df <- data.frame(City = c("A","B","A","C","A","B"), 
                 Empl = c(3,6,3,2,6,8), 
                 UnEmpl = c(4,7,5,6,3,1))

select_if(df, is.double)

> select_if(df, is.double)
  Empl UnEmpl
1    3      4
2    6      7
3    3      5
4    2      6
5    6      3
6    8      1

df <- df %>% 
  group_by(City) %>% 
  mutate(total = sum(Empl,UnEmpl))

> select_if(ungroup(df), is.double)
  Empl UnEmpl total
1    3      4    24
2    6      7    22
3    3      5    24
4    2      6     8
5    6      3    24
6    8      1    22

В заключение, то, что вы наблюдаете, является предполагаемым поведением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...