Как добавить новый столбец и статистические значения в 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.
1 ответ
Общее решение с 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)