[英]How to add a new column and aggregate values in R
我對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)匯總數據。 因此,我想創建另一個稱為小時的列,該列告訴我一天中的小時。 這意味着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的線圖。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.