我正在尝试分析去年的月度报表,这些报表采用 CSV 文件的形式。我尝试的代码如下。我想一次性导入它们,将它们分配给一个对象,然后过滤它们以删除一些不相关的数据。目前,它向我抛出一个错误,因为找不到“月份”列表中的对象。我尝试将它们更改为字符串,但出现了不同的错误。
我的理想输出是列出作为以月份命名的数据框对象的每个月的 CSV。
这是我的第一篇文章,因此如果格式不当或缺乏细节,请告诉我还需要提供什么,我将编辑这篇文章。请帮助这个菜鸟。
library(readr)
library(dplyr)
Months <- c(Jan, Feb, Mar, Apr, May, Jun,
Jul, Aug, Sep, Oct, Nov, Dec)
fileN <- c("2023-01-01", "2023-02-01", "2023-03-01",
"2023-04-01", "2023-05-01", "2023-06-01",
"2023-07-01", "2023-08-01", "2023-09-01",
"2023-10-01", "2023-11-01", "2023-12-01")
dir = "/R/" #I have anonymised this directory for privacy reasons
for(i in 1:12){
FileP <- paste0(dir,fileN[i],".csv")
Months[i] <- read_csv(FileP, show_col_types = F)
Months[i] <- Months[i] %>% filter(
Months[i]$`Transaction Type` != "Internal Transfer" &
Months[i]$Amount < 0)
}
运行时报此错误:
UseMethod(“filter”) 中的错误:
没有适用于“列表”类对象的“过滤器”方法 另外:警告消息: 以月为单位[i] <- read_csv(FileP, show_col_types = F) : number of items to replace is not a multiple of replacement length
您必须这样调用每月的每个元素:
for(i in 1:12){
FileP <- paste0(dir,fileN[i],".csv")
Months[i] <- read_csv(FileP, show_col_types = F)
Months[i] <- Months[[i]] %>% filter(
Months[[i]]$`Transaction Type` != "Internal Transfer" &
Months[[i]]$Amount < 0)
}
请注意,我使用
Months[[i]]
而不是 Months[i]
提取列表中的每个元素,因为后者返回长度为 1 的列表,而前者返回与列表中第 i 个元素对应的数据帧。