Использование pull () из dplyr после чтения данных с помощью haven :: read_sas сохраняет атрибуты.Как избежать? - PullRequest
0 голосов
/ 31 января 2019

Я работаю с несколькими наборами данных, которые изначально представляют собой файл .sas7bdat.

Изначально я загрузил все файлы с использованием пакета sas7bdat, но теперь я убежден, что пакет haven можетвыполнять работу лучше и быстрее.

Однако вновь загруженные данные с haven::read_(sas) ведут себя иначе, чем sas7bdat::read.sas7bdat() при использовании pull() из dplyr:

library("haven")
library("dplyr")
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
library("sas7bdat")

data.sas7 <- sas7bdat::read.sas7bdat(system.file("examples", "iris.sas7bdat", package = "haven"))
data.sas7 %>% summarise(mean = mean(Petal_Length)) %>% pull
#> [1] 3.758

data.haven <- haven::read_sas(system.file("examples", "iris.sas7bdat", package = "haven"))
data.haven %>% summarise(mean = mean(Petal_Length)) %>% pull
#> [1] 3.758
#> attr(,"format.sas")
#> [1] "BEST"

Создано в 2019-01-31 пакетом представ (v0.2.1)

Как видно из приведенного выше примера, attr() также печатаютсякогда данные загружаются с использованием haven.Это непрактично, например, когда я хочу напечатать результат в rmarkdown.

Мой вопрос: как можно избежать печати атрибута при использовании pull() формы dplyrкогда данные загружаются с haven?

1 Ответ

0 голосов
/ 31 января 2019

Сначала давайте воспроизведем похожие данные:

iris2 <- iris
attr(iris2$Petal.Length,"format.sas") <- "BEST"
iris2 %>% 
  summarise(mean = mean(Petal.Length)) %>% 
  pull
# [1] 3.758
# attr(,"format.sas")
# [1] "BEST"

Затем посмотрим на первую строку, которую я здесь использую, она удаляет атрибут "format.sas" всех столбцов:

iris2 %>% 
  mutate_all(`attr<-`,"format.sas", NULL) %>% 
  summarise(mean = mean(Petal.Length)) %>% 
  pull
# [1] 3.758

Если вы хотитеудалить все атрибуты:

iris2 %>% 
  mutate_all(`attributes<-`, NULL) %>% 
  summarise(mean = mean(Petal.Length)) %>% 
  pull

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