sfa*_*tor 1 plot r data-analysis aggregation
我是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
...
Run Code Online (Sandbox Code Playgroud)
我需要按一天中的小时(**_ 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
Run Code Online (Sandbox Code Playgroud)
并获得Prop1和Prop2的线图.
gsub的一般解决方案:
Data$Hour <- gsub(".+_(\\d+).txt","\\1",Data$Datetime)
Run Code Online (Sandbox Code Playgroud)
编辑:
你可以Data$Hour <- substr(Data$Hour,1,2)用来获得一小时.如评论中所述,如果您在Datetime中始终具有完全相同的结构,则可以substr()立即使用:
Data$Hour <- substr(Data$Datetime,10,11)
Run Code Online (Sandbox Code Playgroud)
然后你可以使用aggregate,tapply,by,...无论做你想做什么.要将Prop1和Prop2相加,您可以使用聚合,例如:
aggregate(Data[2:3],list(Data$Hour),sum)
Run Code Online (Sandbox Code Playgroud)
使用数据集:
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)
Run Code Online (Sandbox Code Playgroud)