我的问题的一些背景:这是以前的研究助理写的R剧本,但他没有为我自己使用它提供任何指导。在完成R教科书后,我尝试在我的数据文件上使用代码。
这段代码应该做的是加载多个.csv文件,从中删除某些项目/列,然后将新清理的.csv文件写入指定目录。
目前,正确的目录中使用正确的文件名创建文件,但正在创建的.csv文件为空。
我目前收到以下错误消息:
警告 fread(input = paste0(“data /”,str_match(pattern =“CAFAS | PECFAS”,:在第2行开始数据输入并丢弃第1行,因为它有太少或太多的项目不是列名或数据:(变量)名字)。
这是我的代码:
library(data.table)
library(magrittr)
library(stringr)
# create a function to delete unnecessary variables from a CAFAS or PECFAS
data set and save the reduced copy
del.items <- function(file){
data <- fread(input = paste0("data/", str_match(pattern = "CAFAS|PECFAS",
string = file) %>% tolower, "/raw/", file), sep = ",", header = TRUE,
na.strings = "", stringsAsFactors = FALSE, skip = 0, colClasses =
"character", data.table = FALSE)
data <- data[-grep(pattern = "^(CA|PEC)FAS_E[0-9]+(TR?(Initial|[0-
9]+|Exit)|SP[a-z])_(G|S|Item)[0-9]+$", x = names(data))]
write.csv(data, file = paste0("data/", str_match(pattern = "CAFAS|PECFAS",
string = file) %>% tolower, "/items-del/", sub(pattern = "ExportData_", x =
file, replacement = "")) %>% tolower, row.names = FALSE)
}
# delete items from all cafas data sets
cafas.files <- list.files("data/cafas/raw", pattern = ".csv")
for (file in cafas.files){
del.items(file)
}
# delete items from all pecfas data sets
pecfas.files <- list.files("data/pecfas/raw", pattern = ".csv")
for (file in pecfas.files){
del.items(file)
}