2016-05-22 16 views
0

extrahieren und zählen Ich habe versucht, die Jahre aus Daten zu extrahieren und zu zählen.Jahr aus Daten in R

änderte es das Datenformat wie:

a$time = strptime(a$time, format="%m/%d/%y %I:%M %p") 

und jetzt möchte ich wissen, wie oft von einem Jahr erscheint. Zum Beispiel, wie viele Daten stammen aus dem Jahr 2008. Kann mir jemand helfen?

Antwort

0

Da Sie keine Daten geliefert haben, ich bin Erzeugen eine data.frame mit einer Spalte, die viele verschiedenen Tage zwischen 2007 und 2017

a <- data.frame(time = seq(as.POSIXct("2007-01-01"), as.POSIXct("2017-01-01"), by = 60 * 60)) 

I seq() verwende enthält eine Reihe von Daten zu erzeugen, von 2007-01-01 bis 2017-01-01, mit einem Unterschied zwischen jedem Datum von 60 * 60 Sekunden (dh 1 Stunde)

Blick auf den Kopf des data.frame, hier haben wir Daten und Zeiten, getrennt durch 1 Stunde (wie erwartet).

head(a) 
#     time 
# 1 2007-01-01 00:00:00 
# 2 2007-01-01 01:00:00 
# 3 2007-01-01 02:00:00 
# 4 2007-01-01 03:00:00 
# 5 2007-01-01 04:00:00 
# 6 2007-01-01 05:00:00 

Sie sind zu wissen, interessiert, wie oft jedes Jahr in der data.frame erscheint. Deshalb können wir das Datumsformat von nur das Jahr ("%Y")

Zum Beispiel

head(format(a$time, format = "%Y")) ## gives the 'head' of the data, formatted in years. 
## [1] "2007" "2007" "2007" "2007" "2007" "2007" 

aus der Hilfedatei ?table

Tabelle verwendet die Quer Klassifizieren Faktoren eine Kontingenz zu bauen Tabelle der Zählungen bei jeder Kombination von Faktorstufen.

d.h. es zählt die Anzahl der Vorkommen jedes Wertes. So können wir table() verwenden, um die Häufigkeit zu zählen, mit der jedes Jahr auftritt.

dies in Etappen Breaking down:

t <- format(a$time, format = "%Y") 
head(t) 
[1] "2007" "2007" "2007" "2007" "2007" "2007" 

So die Anzahl der in den Daten jedes Jahr stattfindet zu erhalten, können wir table(t) verwenden.

table(t) 
# 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 
# 8760 8784 8760 8760 8760 8784 8760 8760 8760 8784 1 

Und wenn Sie dies als data.frame gespeichert wollten, würden Sie

df_t <- as.data.frame(table(t)) 
#  t Freq 
# 1 2007 8760 
# 2 2008 8784 
# 3 2009 8760 
# 4 2010 8760 
# 5 2011 8760 
# 6 2012 8784 

Um die Datenmenge zu finden für ein bestimmtes Jahr gesammelt verwenden, Teilmenge Sie ihn nur data.frame für das Jahr.

df_t[df_t$t == 2008,] 
# t Freq 
# 2 2008 8784 

So haben wir 8784 Beobachtungen für 2008

+0

Ich bin neu in R, es tut mir leid, dass ich es nicht verstehe. Die Daten bestehen aus vielen verschiedenen Tagen aus verschiedenen Jahren, und ich möchte nur wissen, wie viele Daten in diesem Jahr gesammelt wurden. Würdest du es mir bitte erklären? Danke – RMghost

+0

@RMghost - Ich habe mehr Details hinzugefügt. Hilft das? – SymbolixAU

0

nur die 4-stellige Jahre zu ziehen, nur für die Jahre stellen aus Ihrer Zeit, etwa so:

a$years = format(a$time, format="%Y") 

Sie dann kann diese am einfachsten in dplyr abzählen.Der gesamte Teil des Codes auf die Jahre nur herausziehen und die Filter nur für ein bestimmtes Jahr und dann wären jene oben zählen:

library(dplyr) 
a %>% transmute(years = format(time, format="%Y")) %>% filter(years == "2008") %>% tally 

für weitere Informationen, Hadleys dplyr Vignette ist ein großartiger Ort zu beginnen: https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html