1

我对 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 的线图。

4

1 回答 1

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)
于 2011-02-17T10:19:59.653 回答