【发布时间】:2020-05-11 13:44:11
【问题描述】:
我使用 SAS 文件 (sas7bdat = dataframes) 和 SAS 格式 (sas7bcat)。 我的 sas7bdat 文件位于“数据”文件中,因此我可以在对象 files_names 中获得一个列表。 这是我的代码的第一部分,运行良好
files_names <- list.files(here("data"))
nb_files <- length(files_names)
data_names <- vector("list",length=nb_files)
for (i in 1 : nb_files) {
data_names[i] <- strsplit(files_names[i], split=".sas7bdat")
}
for (i in 1:nb_files) {
assign(data_names[[i]],
read_sas(paste(here("data", files_names[i])), "formats/formats.sas7bcat")
)}
但我在尝试从包 Haven 应用函数 as_factor 时遇到了一些问题(为了在我的新数据帧上应用标签并获得 SEX = "Male" 而不是 SEX = 1)。 我可以让它像下面的代码一样逐个数据帧地工作
df_labelled <- haven::as_factor(df, only_labelled = TRUE)
我想创建一个循环,但没有成功,因为我的 data_names[i] 不是数据框,而 as_factor 在第一个参数中需要一个数据框。
我对 R 很陌生,如果有人可以帮助我,非常感谢。
【问题讨论】: