我正在处理最初作为.sas7bdat
文件提供的几个数据集。
最初,我使用该sas7bdat
程序包加载了所有文件,但是现在我确信该haven
程序包可以做得更好,更快。
但是,与使用fromhaven::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"
由reprex软件包(v0.2.1)创建于2019-01-31
从上面的示例可以看出,attr()
使用加载数据时也会打印haven
。例如,当我想要在rmarkdown
。中打印结果时,这是不实际的。
我的问题是:如何在加载数据时使用pull()
表单dplyr
时避免打印属性haven
?
首先,让我们重现类似的数据:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句