Comparer deux dates dans la R

J'ai un texte séparé par des tabulations fichier que j'ai importé à R. j'ai utilisé la commande suivante pour l'importation:

data = read.table(soubor, header = TRUE, sep = "\t", dec = ".", colClasses =c("numeric","numeric","character","Date","numeric","numeric"))

Quand je lance str(data) pour vérifier les types de données de mes colonnes-je obtenir:

'data.frame':   211931 obs. of  6 variables:
$ DataValue   : num  0 0 0 0 0 0 0 0 0 NA ...
$ SiteID      : num  1 1 1 1 1 1 1 1 1 1 ...
$ VariableCode: chr  "Sucho" "Sucho" "Sucho" "Sucho" ...
$ DateTimeUTC : Date, format: "2012-07-01" "2012-07-02" "2012-07-03" "2012-07-04" ...
$ Latitude    : num  50.8 50.8 50.8 50.8 50.8 ...
$ Longitude   : num  15.6 15.6 15.6 15.6 15.6 ...

Une reproductibilité de l'échantillon des 20 premières lignes de mes données est ici:

my_sample = dput(data[1:20,])

structure(list(DataValue = c(0, 0, 0, 0, 0, 0, 0, 0, 0, NA, NA, 
NA, NA, NA, NA, NA, NA, 0, 0, 0), SiteID = c(1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), VariableCode = c("Sucho", 
"Sucho", "Sucho", "Sucho", "Sucho", "Sucho", "Sucho", "Sucho", 
"Sucho", "Sucho", "Sucho", "Sucho", "Sucho", "Sucho", "Sucho", 
"Sucho", "Sucho", "Sucho", "Sucho", "Sucho"), DateTimeUTC = structure(c(15522, 
15523, 15524, 15525, 15526, 15527, 15528, 15529, 15530, 15531, 
15532, 15533, 15534, 15535, 15536, 15537, 15538, 15539, 15540, 
15541), class = "Date"), Latitude = c(50.77, 50.77, 50.77, 50.77, 
50.77, 50.77, 50.77, 50.77, 50.77, 50.77, 50.77, 50.77, 50.77, 
50.77, 50.77, 50.77, 50.77, 50.77, 50.77, 50.77), Longitude = c(15.55, 
15.55, 15.55, 15.55, 15.55, 15.55, 15.55, 15.55, 15.55, 15.55, 
15.55, 15.55, 15.55, 15.55, 15.55, 15.55, 15.55, 15.55, 15.55, 
15.55)), .Names = c("DataValue", "SiteID", "VariableCode", "DateTimeUTC", 
"Latitude", "Longitude"), row.names = c(NA, 20L), class = "data.frame")

Maintenant, je veux filtre de mon tableau en fonction de la date. Notez que je suis en cours d'exécution de mon code à l'intérieur d'un for boucle. Tout d'abord, je sous-ensemble de mes données avant le 1er juillet 2012 et de faire un peu de traitement. Ensuite, j'ai sous-ensemble de mes données par 2 juillet et faire un peu de traitement, et ainsi de suite.. Par exemple, je veux obtenir toutes les lignes avec la date de l'égalité au 6 juillet 2012. J'ai essayé le code:

startDate = as.Date("2012-07-01");
endDate = as.Date("2012-07-20");
all_dates = seq(startDate, endDate, 1);
#the following code I'm trying to run inside a loop...
for (j in 1:length(all_dates)) {
filterdate = all_dates[j];
my_subset = my_sample[my_sample$DateTimeUTC == filterdate,]
#now I want do do some processing on my_subset...
}

Mais le code ci-dessus retourne un dataset vide à partir de l'étape 7 de la boucle.

Ainsi, par exemple:

subset_one = my_sample[my_sample$DateTimeUTC == all_dates[6],]

retourne: 3 obs of 6 variables.

Mais, pour une raison inconnue, l'exemple:

subset_two = my_sample[my_sample$DateTimeUTC == all_dates[7],]

retourne: 0 obs of 6 variables.

(note: j'ai édité le code ci-dessus pour faire mon problème 100% reproductible)

Les idées de ce que je fais mal?

data[data$DateTimeUTC == as.Date("2012-07-04"),] Veuillez lire l'introduction à R pour apprendre les fondamentaux..
Votre exemple fonctionne et renvoie les résultats souhaités, mais pour une raison que lorsque j'ai mis le filtre de date par programmation (comme à l'intérieur d'une boucle for), j'ai un dataset vide. J'ai édité mon code d'exemple pour éclaircir mon problème.
Je ne peux pas vous aider sans reproductible exemple. Cependant, je serais prêt à parier mon déjeuner que vous n'avez pas besoin d'un for boucle et de ne pas les utiliser.
Un exemple n'est pas reproductible sans quelques données qui expose le problème. Utilisation dput(head(data)) pour leur apporter un petit échantillon de données que l'on peut coller dans un R de session.
Recherche de "split appliquer combiner" pour voir comment vous pouvez vous débarrasser de la for boucle.

OriginalL'auteur jirikadlec2 | 2014-02-05