我正在努力创建高效的代码导入SAS数据文件。
我的代码如下:
library(foreign)
library(haven)
f <- file.path(path = "E:/Cohortdata/Raw cohort/Nationalscreeningcohort/01.jk",
c("nhis_heals_jk_2002.sas7bdat","nhis_heals_jk_2003.sas7bdat" ,"nhis_heals_jk_2004.sas7bdat",
"nhis_heals_jk_2005.sas7bdat","nhis_heals_jk_2006.sas7bdat","nhis_heals_jk_2007.sas7bdat",
"nhis_heals_jk_2008.sas7bdat","nhis_heals_jk_2009.sas7bdat","nhis_heals_jk_2010.sas7bdat", "nhis_heals_jk_2011.sas7bdat","nhis_heals_jk_2012.sas7bdat","nhis_heals_jk_2013.sas7bdat"))
d <- lapply (f, read_sas)
我知道用for循环重写会更有效,但不知道代码应该是什么样子
如果你帮助我,我将非常感激.
1条答案
按热度按时间atmip9wb1#
这是我在这里发布的代码的变体,但您也可以将其用于SAS文件。
请注意,我没有使用
file.path()
,而是使用了list.files()
,这样我就可以读取路径"E:/Cohortdata/Raw cohort/Nationalscreeningcohort"
中的所有文件,这是我假设文件所在的位置,此外,我使用参数pattern
只查找sas7bdat
文件。list.files()
返回一个向量,在这里您可以使用您喜欢的*apply
方法。但是,我喜欢将vector
更改为tbl_df
,并使用tidyverse
方法。这意味着使用purrr::map()
(tidyverse
的一部分)阅读所有文件,并创建所有文件的大数据tbl_df
。