r - 由于可能的索引错误,时间序列函数不起作用?
问题描述
我正在使用将通过时间序列分析的 CSV 文件文件夹。为了执行测试,我决定创建几个函数,它们将通过一个 for 循环来创建对路径中每个文件中特定变量的时间序列分析。
下面我的代码可以分为三个部分:数据导入、函数创建和它通过 for-loop。
我遇到的问题是我认为我的函数编码不正确。'ts' object must have one or more observations
当我运行我的代码并初始化我的时间序列函数时,我收到一条错误消息:当我尝试绘制我的data_frame
或特定的计数时csv_data
,我唯一的选择是绘制csv_data$file_name
。这是一个问题,因为我应该选择csv_data$placeholderName
改为。
我编写函数的方式有问题吗?如果是这样,我该如何解决?我的代码还有其他问题吗?
注意:许多时间序列对象将使用相同的方法制作,以便更轻松地分析多个文件。例如,使用下面的示例数据,该函数将使用 5 个 placeholderName 变量创建时间序列对象。
代码:
# retrieve data from the csv files from PATH
data <- list.files("/path of 1160 csv files", pattern = ".csv", all.files = TRUE, full.names = TRUE)
# get list element for data
csv_data <- lapply(data, read.csv)
# Set the name of each list element to its respective file name.
# NOTE: full.names = FALSE to get only the file names, not the full path.
names(csv_data) <- gsub(".csv","", list.files("/path of 1160 csv files", pattern = ".csv", all.files = TRUE, full.names = FALSE), fixed = TRUE)
names(csv_data) <- gsub(", ", "-", names(csv_data), fixed = TRUE)
# Determine the amount of csvs in path
csv_length <- as.integer(length(csv_data))
# placeholderName is converted into time-series data.
# Since dates were not mentioned in the Date format (shown as string)
# Thus general index were used (1 to 248)
# Declaring time series object
count <- 0
timeSeries <- function(count) {
data_frame <- csv_data[count]
data_frame[is.na(data_frame)] = 0
placeholderName_ts = ts(data_frame$placeholderName, start = 1, end=248, frequency = 1)
return(placeholderName_ts)
}
for (i in 1:csv_length) {
count = i
# time series creation
timeSeries(i)
}
示例数据:
# placeholderName = phN
$`File-name-1`
date phN1 phN2 phN3 phN4 phN5
1 2020-02-15 0 8.331944 1.8722222 65.29108 NA
2 2020-02-16 1 15.045833 11.9569444 83.02963 NA
3 2020-02-17 1 15.090278 14.2013889 94.59667 NA
4 2020-02-18 5 20.806944 19.0736111 90.42332 NA
5 2020-02-19 1 13.134722 11.9388889 92.53200 NA
6 2020-02-20 0 9.240278 8.0916667 92.64821 NA
7 2020-02-21 2 5.838889 -0.8875000 64.58893 NA
任何更多信息,如果需要,将在下面添加:
- Edit_1:每个文件(数据集)具有相同的结构:日期、phN1、phN2、phN3、phN4 和 phN5。
解决方案
你可以试试这个功能 -
timeSeries <- function(count) {
data_frame <- csv_data[[count]]
data_frame[is.na(data_frame)] = 0
placeholderName_ts = ts(data_frame[[placeholderName]],
start = 1, end=248, frequency = 1)
return(placeholderName_ts)
}
result <- lapply(seq_len(csv_length), timeSeries)
推荐阅读
- css - 样式表取决于行数
- chart.js - 如何更改 chartjs / vue-chartjs 中某些线条的颜色?
- python-3.x - 如果键重复,如何在字典中添加 2 个值?
- python - 调用路径中有空格的 Windows 程序
- ios - 为什么presentViewController 再次调用viewDidLoad?
- django - 当 POST 参数中已经存在相关模型的 id 时,Django REST Framework 会询问它
- java - 获取 ConverterNotFoundException
- triggers - 带有旧文档和新文档的 Azure Cosmos DB 文档更改触发器?
- thumbor - 如何使用拇指从文件夹本地加载图像
- c# - 在满足预期条件后执行一些操作