2011-03-02 3 views
3

J'ai les données d'entrée, et le sous-ensemble afin de regarder seulement les lignes avec une entrée de 4 ou 5 dans une colonne appelée CODE. Ensuite, j'ai sous-classé ces données afin de pouvoir regarder une espèce particulière. Ensuite, je me suis assuré que les entrées de la colonne DATE étaient lues comme une date, au lieu d'un facteur (qui était la valeur par défaut). Puis, je tracer deux des colonnes contre l'autre:Comment puis-je tracer des sous-ensembles de données temporelles?

ph<-read.csv(url("http://luq.lternet.edu/data/lterdb88/data/Lfdp1-ElVerdePhenology.txt")) 
ftsd<-subset(ph, ph$CODE %in% c("4","5")) 
DACEXC<-subset(ftsd, ftsd$SPECIES %in% "DACEXC") 
DACEXC$DATE<-as.Date(DACEXC$DATE, format="%m/%d/%y") 
plot(DACEXC$DATE,DACEXC$NUMBER) 

Les données va de 1992 à 2007, et je voudrais tracer un an à la fois. Je vais le faire pour beaucoup d'espèces, mais je ne sais pas comment le faire. J'ai essayé toute une série de choses, y compris la limitation de l'axe des x ou d'essayer de faire un sous-ensemble d'une seule année, mais je n'ai pas compris. J'ai essayé quelques-unes des idées suivantes:

plot(DACEXC$DATE,DACEXC$NUMBER, xlim=c(1992,1993)) 
plot(DACEXC$DATE,DACEXC$NUMBER, xlim=c(01/01/1992,12/31/1992)) 
plot(DACEXC$DATE,DACEXC$NUMBER, xlim=c(1992:1993)) 

DACEXC92<-subset(DACEXC92, DATE==1992) 
DACEXC92 
[1] DATE BASKET SPECIES CODE NUMBER 
<0 rows> (or 0-length row.names) 

Les rendements au-dessus d'une trame de données vide tout comme le bas, et aucun de mes tentatives de présenter des arguments conditionnels ont été couronnés de succès.

DACEXC92<-subset(DACEXC92, DATE==04/01/92) 
DACEXC92 
[1] DATE BASKET SPECIES CODE NUMBER 
<0 rows> (or 0-length row.names) 

Toutes les idées sur la façon de tracer un an à la fois, ou pour savoir comment faire un sous-ensemble de chaque année?

+0

Je reformulé le titre de votre question pour pour affiner ce que vous avez demandé. Ce site sert également de référence de recherche, de sorte que les titres clairs aident les gens à trouver ce qu'ils cherchent. –

Répondre

4

Convertissez la date en DateTimeClass (POSIXct ou Date) et utilisez les outils disponibles.

DACEXC$DATE <- as.POSIXct(strptime(DACEXC$DATE, "%Y-%m-%d")) 

(as.Date(DACEXC$DATE) ou as.POSIXct(DACEXC$DATE) pourrait probablement être utilisé mais je tiens à le faire explicitement, car il est plus facile de comprendre ce qui ne va pas quand un format différent est utilisé).

Extrait du composant de l'année de la représentation POSIXlt, et correspondent à une année spécifique:

with(DACEXC[as.POSIXlt(DACEXC$DATE)$year + 1900 == 1993, ], plot(DATE, NUMBER)) 

ou dans une plage d'années:

with(DACEXC[as.POSIXlt(DACEXC$DATE)$year + 1900 %in% 1993:1995, ], 
    plot(DATE, NUMBER)) 

Il y a beaucoup d'options, une fois les données sont dans un bon format DateTime, y compris la sous-ensemble avec des représentations de caractères comme format(DACEXC$DATE, "%Y") == "1993".

Voir ?strptime pour les détails de format, et ?DateTimeClasses pour la grande image.

3

Assurez-vous que vos valeurs XLIM sont les dates:

with(DACEXC, 
    plot(DATE,NUMBER, 
    xlim=as.Date(c("1992-01-01","1992-12-31")) 
) 
) 

qui donne:

enter image description here

Notez que cela ne change la XLIM, donc les données pour l'année prochaine est encore visible. Si vous voulez travailler avec les années, vous pouvez également utiliser le package chron:

library(chron) 
DACEXC92 <- DACEXC[years(DACEXC$DATE)==1992,] 
with(DACEXC92,plot(DATE,NUMBER)) 

qui vous donne la trame de données désirée et:

enter image description here

+1

+ 1 réponse joliment illustrée @Joris –

Questions connexes