【发布时间】:2018-01-11 19:32:24
【问题描述】:
我试图以时间序列图结束,将不同城市与 center 数据(数据框)进行比较。其中 center 是 R studio 中的数据框对象,我已经导入了。
我有一个包含 165 个 csv 文件的文件夹,每个文件代表一个城市。我想在一个图中绘制所有 165 个 csv 文件(作为独立名称/数据框)加上 center 数据框。
我希望它看起来像这样:(x 轴是时间,y 轴是 CO,所有颜色都是纯色。
我想对每个 csv 文件执行四件事,但最后,让这四项操作自动对 165 个 csv 文件中的每一个执行。
1) 跳过 csv 文件的前 25 行
2) 合并每个 csv 文件的日期和时间列
3) 删除第 3 列单元格值为空的行
4) 将第 3 列的名称从 ug/m3 更改为 CO
我希望它以自动方式对 165 个 csv 文件中的每一个执行四个操作。然后,能够在一个图中有效地绘制新更新的 csv 文件。
我在一个 csv 文件上使用了下面的代码,看看它是否适用于一个 csv。我不确定如何以有效的方式组合所有内容。实现这一点:
city1 <- read.csv("path",
skip = 25)
city1$rtime <- strptime(paste(city1$Date, city1$Time), "%m/%d/%Y %H:%M")
colnames(city1)[3] <- "CO"
city[,3][!(is.na(city[,3]))] ## side note: help with this would be appreciated, I was unsure of what goes before the comma.
总的来说,我想要一个像上面那样包含所有 165 个城市(csv 文件)的图。我需要帮助将四个动作放在每个 csv 文件上并将它们全部绘制在一个图中。
对于剧情, 我是这样做的一个例子:
ggplot(center, aes(rtime, CO)) + geom_smooth(aes(color="Center"))+
geom_smooth(data=city1,aes(color="City1"))+
labs(color="Legend")
更新: 每个城市的 csv 文件似乎已经合并为一行。我不确定我是否可以发布确切的输出,但它看起来像下面的:粉红色的线是城市,蓝色的线是 center.x 轴时间和y 轴是 CO。我希望这会有所帮助。
unique(df.cleaned$cities)的结果
> unique(df.cleaned$cities)
[1] "WFH4N_YEK04_PORTLAND_08AUG16_R1"
[2] "WFH2N_QIM23_AUSTIN_30JUL16_R1"
[3] "WFH7N_QIM70_NEWYORK_20JUL16_R1"
[4] "WFH3N_YEK28_NAMPA_23AUG16_R1"
[5] "WFH9N_YEK18_MESA_12JUL16_R1"
[6] "WFH6N_QIM10_OAKLAND_11AUG16_R1"
[7] "WFH3N_YEK01_DETROIT_30AUG16_R1"
[8] "WFH6N_YEK05_ATLANTA_30AUG16_R1"
[9] "WFH1N_YEK32_LONGBEACH_01JUL16_R1"
[10] "WFH8N_YEK39_LOSANGELES_30AUG16_R1"
[11] "WFH5N_YEK59_BALTIMORE_31AUG16_R1"
[12] "WFH1N_QIM19_MEMPHIS_01JUL16_R1"
[13] "WFH0N_YEK2087_DENVER_09JUL16_R1"
[14] "WFH4N_QIM43_CLEVELAND_30AUG16_R1"
[15] "WFH8N_QIM65_HARTFORD_30AUG16_R1"
[16] "WFH2N_YEK66_SEATTLE_30AUG16_R1"
[17] "WFH0N_YEK17_SANJOSE_30AUG16_R1"
【问题讨论】:
-
要自动化读取 165 个 csv 文件的部分,您可以获得所有 csv 文件名的字符向量,然后对文件名执行 lapply。例如
file_names <- list.files(path ="your folder path", pattern = ".csv")获取文件名,然后lapply(file_names, FUN = function(file){...}) -
使用我发布的正则表达式,所有这些都将解析为“”,因为您的城市名称是大写的,而不是您给出的示例中的标题大小写。如果您不尝试提取城市名称,而是像那样保留该列
cities,则您的绘图应该有单独的行,如aes(colour = cities)给出的那样。那部分工作正常吗? -
@Brian 当我意识到我给出的示例不同时,我决定不尝试正则表达式。没有添加正则表达式,它仍然给了我一行。
-
如果没有一些示例数据,恐怕我无法重现该错误。你能分享 1-2 个 CSV 还是它们太大了?
标签: r csv ggplot2 import time-series