簡體   English   中英

如何在R中添加新列和聚合值

[英]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)

然后,您可以使用aggregatetapplyby ,...來做您想要的任何事情。 總結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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM