2015-07-13 2 views
1

J'ai un ensemble de données avec une date comme ceci "{datetime:2015-07-01 09:10:00" Donc, je voulais supprimer le texte, puis gardez la date & le temps que as.Date renvoie uniquement la date. Donc j'écris ce code mais le seul problème que j'ai est que pendant la deuxième ligne avec strsplit, ça ne me retourne que l'heure de la première ligne et donc d'effacer les autres ... Je serais ravi d'avoir TOUT mon temps non seulement la première. Je pensais peut-être à propos de sapply, mais je ne peux pas faire les choses correctement J'ai beaucoup d'erreurs ou peut-être avec une boucle pour? Je suis novice à R donc je ne sais pas vraiment comment le faire de la meilleure façon.Extraire les dates fois d'un data.frame dans R

Pourriez-vous m'aider s'il vous plaît? D'ailleurs si vous avez une autre idée pour le format de date & ou un moyen simple de le faire, il devrait être très gentil de votre part.

data$`Date Time`=as.character(data$`Date Time`) 

data$`Date Time`=unlist(strsplit(data[,1], split='e:'))[2] 

date=substr(data$`Date Time`,0,10) 

date=as.Date(date) 

time=substr(data$`Date Time`,12,19) 

data$Date=date 

data$Time=time 

Merci beaucoup pour votre aide!

+0

Essayez 'spply (strsplit (données [, 1]," e: "), FUN = fonction (x) {x [2]})'. –

Répondre

7

Vous pouvez utiliser l'argument format pour éviter tous les StrSplit:

times <- as.POSIXct(data$`Date Time`, format='{datetime:%Y-%m-%d %H:%M:%S') 

Cet objet est à la fois date et l'heure, et alors vous pouvez juste le stocker dans la trame de données sur une seule colonne de type POSIXct plutôt que deux colonnes de type chaîne par exemple

data$datetime <- times 

mais si vous voulez stocker la date comme une date et le temps comme une chaîne (comme dans votre exemple ci-dessus):

data$Date <- as.Date(times) 
data$Time <- strftime(times, format='%H:%M:%S') 

Voir ?as.Date, ?as.POSIXct, ?strptime pour plus de détails sur cet argument format et diverses conversions entre la date et la chaîne.

+0

Merci beaucoup !! En plus c'est seulement pour une date mais si j'ai le même problème avec par exemple: "sujet: MMM" comment résoudriez-vous cela si je voulais juste "MMM" car encore une fois, avec strsplit() je perds tous les niveaux , ABC, JKL ... ", s'il vous plaît? –

+0

Désolé, j'ai trouvé: données $ Objet <- gsub ("sujet:", "", données $ Objet) !! –