2017-10-18 11 views
2

Ceci est un problème pour lequel je ne trouve aucune aide en ligne.Dans R: comment supprimer les espaces dans le tracé des séries de dates lors de l'utilisation de posixct pour une colonne date-heure?

Voici le lien vers les données d'origine (trop grand pour coller ici): https://drive.google.com/open?id=0B5KaRU02aEnAbnM5ODNPMkYxN0E

et voici sa structure

> str(dfsite) 
'data.frame': 11712 obs. of 8 variables: 
$ Site_ID  : chr "02AB08-001" "02AB08-001" "02AB08-001" "02AB08-001" ... 
$ Deployment_ID: num 15352 15352 15352 15352 15352 ... 
$ RecDate  : chr "01-07-2007" "01-07-2007" "01-07-2007" "01-07-2007" ... 
$ RecTime  : chr "00:00:00" "00:30:00" "01:00:00" "01:30:00" ... 
$ Temperature : num 19.5 19.5 19.6 19.6 19.6 ... 
$ TimeStep  : num 30 30 30 30 30 30 30 30 30 30 ... 
$ RecYr  : Factor w/ 19 levels "1996","1997",..: 12 12 12 12 12 12 12 12 12 12 ... 
$ RecDT  : POSIXct, format: "2007-07-01 00:00:00" "2007-07-01 00:30:00" "2007-07-01 01:00:00" "2007-07-01 01:30:00" ... 

La colonne RecDT se compose des données quotidiennes de 00 : 00: 00 à 23:30:00 pour tout le mois de juillet pendant plusieurs années: 1) 2007-07-01 00: 00: 00-23: 30: 00 à 2007-07-30 00:00:00 -23: 30: 00 2) 2009-07-01 00: 00: 00-23: 30: 00 au 2009-07-30 00: 00: 00-23: 30: 00 ...

Je voudrais créer un graphique de série chronologique pour chaque année qui montre le jour 1 au jour 30 juillet pour un id_site spécifique.

Mon code actuel crée une série chronologique intrigue -pour tous les mois, mais il ne devrait avoir le mois de Juillet -pour toutes les années, mais il devrait créer des facettes pour différentes années

# original data 
df <- excel file 
# extract year only 
df["RecYr"] <- substr(df$RecDate,7,10) 
df$RecYr <- as.factor(df$RecYr) 

#extract date and time 
df["RecDT"] <- paste(df$RecDate,df$RecTime) 
df$RecDT <- as.character(df$RecDT) 
df$RecDT <- as.POSIXct(df$RecDT,"%d-%m-%Y %H:%M:%S", tz="UTC") 

# select specific site 
dfsite <- df[df$Site_ID == "02AB08-001",] 

# import ggplot2 and create plot 
library(ggplot2) 
p <- ggplot(dfsite, aes(x=dfsite$RecDT, y=dfsite$Temperature)) + 
    geom_point() + 
print(p) 

here is my plot

Merci beaucoup d'avance.

+0

Toute chance que vous pouvez partager les données en utilisant 'dput()'? Il est plus probable que nous serons en mesure de vous aider si vous fournissez un [exemple complet minimal reproductible] (http://stackoverflow.com/help/mcve) pour répondre à votre question. Quelque chose que nous pouvons travailler et utiliser pour vous montrer comment il pourrait être possible de répondre à votre question. Aussi, bienvenue! –

+0

@EricFail s'il vous plaît, voir le lien google drive pour l'ensemble de données. Je vous remercie. –

+0

En cas de modification, vous pouvez créer un ensemble de données plus petit, c'est-à-dire _minimal_, où le problème pourrait être reproduit? –

Répondre

0

Une solution simple pourrait être:

x <- cumsum(table(dfsite$RecYr)) 
x <- cbind(c(1,x[-length(x)]),x) 
xseq <- c(apply(x,1,function(kk) round(seq(kk[1],kk[2],length.out=3)))) 

p <- ggplot(dfsite, aes(x=1:nrow(dfsite), y=Temperature)) + 
    geom_point() + facet_grid(.~RecYr, scale="free_x") + 
    scale_x_continuous("Time", breaks=xseq, 
     labels = dfsite$RecDT[xseq])+ 
theme(axis.text.x=element_text(angle=45,hjust=1)) 
print(p) 

enter image description here