Comment ajouter une nouvelle colonne et des valeurs agrégées dans R
je suis complètement nouveau à gnuplot et je suis seulement essayer ceci parce que j'ai besoin de l'apprendre. J'ai une valeur dans trois colonnes où la première représente le nom du fichier (date et heure, intervalle d'une heure) et les deux autres colonnes représentent deux entités différentes Prop1 et 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
...
j'ai besoin d'agréger les données à l'heure de la journée (**_0100) qui est le dernier de quatre chiffres. Donc, je veux créer une autre colonne appelée heure qui m'a dit l'heure de la journée. Il signifie 0000 = 0h, 0100 = 1h, ...... 2200 = 22h
etc.
je veux alors obtenir la somme de Prop1 et Prop2 pour chaque heure, donc à la fin obtenir quelque chose comme.
Hour Prop1 Prop2
0h 120 104
1h 230 160
...
10h 90 110
...
23h 100 200
et le obtenir un tracé en ligne de Prop1 et Prop2.
1 réponses
une solution générale avec gsub:
Data$Hour <- gsub(".+_(\d+).txt","\1",Data$Datetime)
EDIT:
Vous pouvez utiliser Data$Hour <- substr(Data$Hour,1,2)
, pour obtenir l'heure. Comme dit dans les commentaires, si vous avez toujours exactement la même structure Datetime, vous pouvez utiliser substr()
immédiatement:
Data$Hour <- substr(Data$Datetime,10,11)
, Alors vous pouvez utiliser aggregate
, tapply
, by
, ... que ce soit pour faire ce que vous voulez. Pour additionner Prop1 et Prop2, vous pouvez utiliser agrégat, par exemple:
aggregate(Data[2:3],list(Data$Hour),sum)
avec l'ensemble de données:
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)