我对gnuplot来说是全新的,我只是尝试这个,因为我需要学习它。我有三列中的值,其中第一列表示文件名(日期和时间,一小时间隔),其余两列表示两个不同的实体Prop1和Prop2。
Datetime Prop1 Prop2
20110101_0000.txt 2 5
20110101_0100.txt 2 5
20110101_0200.txt 2 5
...
20110101_2300.txt 2 5
20110201_0000.txt 2 5
20110101_0100.txt 2 5
...
20110201_2300.txt 2 5
...
我需要按一天中的小时(** _ 0100)聚合数据,这是最后四位数字。所以,我想创建另一个名为hour的列,它告诉我当天的小时。这意味着0000 = 0h, 0100 = 1h, ...... 2200 = 22h
等。
然后我希望每小时得到Prop1和Prop2的总和,所以最后得到类似的东西。
Hour Prop1 Prop2
0h 120 104
1h 230 160
...
10h 90 110
...
23h 100 200
并得到Prop1和Prop2的线图。
答案 0 :(得分:5)
gsub的一般解决方案:
Data$Hour <- gsub(".+_(\\d+).txt","\\1",Data$Datetime)
编辑:
您可以使用Data$Hour <- substr(Data$Hour,1,2)
来获取时间。如评论中所述,如果您在Datetime中始终具有完全相同的结构,则可以立即使用substr()
:
Data$Hour <- substr(Data$Datetime,10,11)
然后,您可以使用aggregate
,tapply
,by
,......无论您想做什么。要将Prop1和Prop2相加,可以使用聚合,例如:
aggregate(Data[2:3],list(Data$Hour),sum)
使用数据集:
zz<-textConnection("Datetime Prop1 Prop2
20110101_0000.txt 2 5
20110101_0100.txt 2 5
20110101_0200.txt 2 5
20110101_2300.txt 2 5
20110201_0000.txt 2 5
20110201_0100.txt 2 5
20110201_0200.txt 2 5
20110201_2300.txt 2 5")
Data <- read.table(zz,header=T,as.is=T)