基于网站7天数据创建DataFrame:列名与文件读取问题
问题解决步骤
1. 修复文件找不到的问题
你用writeLines(d, con="test.csv")将文件保存到了当前工作目录,但后续读取时指定路径为data/test.csv,R会在当前目录下的data子文件夹查找,自然找不到。解决方法二选一:
- 直接读取当前目录的文件:
df <- read.table(file="test.csv", sep=";", dec=",", header=T, stringsAsFactors=F) - 先创建
data文件夹再保存(避免文件杂乱):dir.create("data", showWarnings = FALSE) # 仅当文件夹不存在时创建 writeLines(d, con="data/test.csv") df <- read.table(file="data/test.csv", sep=";", dec=",", header=T, stringsAsFactors=F)
2. 优化数据读取流程(跳过存文件直接转DataFrame)
无需先存成CSV再读取,直接处理readLines的结果更高效,还能直接解决列名问题:
# 正确拼接URL(修正原代码的语法错误) url <- paste0("https://www.pse.pl/getcsv/-/export/csv/PL_GEN_WIATR/data_od/", format(Sys.Date()-7, "%Y%m%d"), "/data_do/", format(Sys.Date(), "%Y%m%d")) d <- readLines(url) # 拆分列名和数据行 col_names <- strsplit(d[1], ";")[[1]] data_rows <- lapply(d[-1], function(x) strsplit(x, ";")[[1]]) # 转换为DataFrame并设置表头 df <- as.data.frame(do.call(rbind, data_rows), stringsAsFactors = FALSE) colnames(df) <- col_names # 将数值列转换为数值类型(适配CSV中的逗号小数点) df[-1] <- lapply(df[-1], function(x) as.numeric(gsub(",", ".", x)))
3. 原代码的URL拼接错误说明
你原来的paste写法存在语法问题,字符串拼接混乱导致URL格式错误,上面的代码用paste0(自动无分隔符拼接)修正了这个问题,确保请求的URL是合法的。
内容的提问来源于stack exchange,提问作者szwagro
相关产品推荐
相关产品推荐

