【发布时间】:2015-12-14 00:07:38
【问题描述】:
我有一个名为“table_parameter”的 csv 文件。 Please, download from here.数据如下:
time avg.PM10 sill range nugget
1 2012030101 52.2692307692308 0.11054330 45574.072 0.0372612157
2 2012030102 55.3142857142857 0.20250974 87306.391 0.0483153769
3 2012030103 56.0380952380952 0.17711558 56806.827 0.0349567088
4 2012030104 55.9047619047619 0.16466350 104767.669 0.0307528346
.
.
.
25 2012030201 67.1047619047619 0.14349774 72755.326 0.0300378129
26 2012030202 71.6571428571429 0.11373430 72755.326 0.0320594776
27 2012030203 73.352380952381 0.13893530 72755.326 0.0311135434
28 2012030204 70.2095238095238 0.12642303 29594.037 0.0281416079
.
.
在我的数据框中,有一个名为 time 的变量包含从 2012 年 3 月 1 日到 2012 年 3 月 7 日的小时值,以数字形式显示。例如 2012 年 3 月 1 日,凌晨 1 点写成 2012030101 等等。
从这个数据集中,我想要子集 (24*11) 数据框,如下表所示:
例如,对于凌晨 1 点 (2012030101,2012030201....2012030701) 和 avg.PM10
我可以通过像这样编写 (24*11)240 行代码来手动执行此子集!
table_par<-read.csv("table_parameter.csv")
times<-as.numeric(substr(table_par$time,9,10))
par_1am_0to10 <-subset(table_par,times ==1 & avg.PM10<=10)
par_1am_10to20 <-subset(table_par,times ==1 & avg.PM10>10 & avg.PM10<=20)
par_1am_20to30 <-subset(table_par,times ==1 & avg.PM10>20 & avg.PM10<=30)
.
.
.
par_24pm_80to90 <-subset(table_par,times ==24 & avg.PM10>80 & avg.PM10<=90)
par_24pm_90to100 <-subset(table_par,times==24 & avg.PM10>90 & avg.PM10<=100)
par_24pm_100up <-subset(table_par,times ==24 & avg.PM10>100)
但我知道这段代码效率很低。有没有办法通过使用循环来有效地做到这一点?
仅供参考:实际上在未来,通过使用这些 (24*11) 数据集,我想绘制一些图。
更新:在这个子集之后,我想使用每个数据集的range 绘制箱线图。但问题是,我想像矩阵一样在一个图中显示range 的所有箱线图 (24*11)[如上图]!如果您有任何进一步的疑问,请告诉我。提前非常感谢。
【问题讨论】:
-
看看
cut。 -
告诉我们更多关于情节的信息,也许有更好的方法来重新格式化数据。
-
我已经更正了下载链接并添加了有关更多情节的详细信息。如果您有任何进一步的疑问,请告诉我。