2014-06-24 4 views
0

Je veux être capable de comparer des valeurs de 2 variables de plus de 30 variables. Exemple de données ressemblerait à ceci:Comment comparer une ligne à la suivante?

A, B 
0, 2014-05-01 13 
30, 2014-05-02 14 
30, 2014-05-02 15 
60, 2014-05-02 15 
30, 2014-05-03 08 
60, 2014-05-03 09 

A est un nombre. B est l'horodatage au format -% Y-% m-% d% H. Maintenant, je voudrais extraire les lignes dans lesquelles la date d'une rangée à la suivante est la même. Et, l'heure est dans une heure de la rangée ci-dessus. (Ainsi, pour la rangée i si la date est le 14 mai et 9 heures et la rangée i + 1 la date est le 14 mai et l'heure soit 8 ou 9 ou 10. Ensuite, elle sera tirée dans un cadre de données séparé, reliant chaque . ligne qui satisfait à la condition

exécution sur les données ci-dessus, le résultat sera

30, 2014-05-02 15 
60, 2014-05-02 15 
60, 2014-05-03 09 
+0

S'il vous plaît n'hésitez pas à éditer la question si elle contribue à améliorer la clarté. Merci – asarapure

+2

Alors qu'est-ce que vous avez essayé jusqu'à présent? – jonrsharpe

+0

Tiré à un data.frame séparé comment? Un pour chaque bloc? Ou juste un data.frame? – MrFlick

Répondre

1

C'est un travail pour lubridate:

dat <- data.frame(A = c(0,30,30,60,30,60), B = 
c("2014-05-01 13","2014-05-02 14","2014-05-02 15","2014-05-02 15","2014-05-03 08","2014-05-03 09"), 
stringsAsFactors = FALSE) 

library(dplyr) 
library(lubridate) 

Vous pouvez utiliser lag pour tirer le précédent valeur de B et utiliser dhours pour avancer d'une heure:

dat %>% 
    mutate(B = ymd_h(B), 
     close = B <= lag(B + dhours(1))) %>% 
    filter(close) 

A     B close 
1 30 2014-05-02 15:00:00 TRUE 
2 60 2014-05-02 15:00:00 TRUE 
3 60 2014-05-03 09:00:00 TRUE 
+0

Je me demande comment Hadley réalise le besoin de telles fonctions. Y a-t-il un paquet d'une autre langue dont il puise des inspirations? – Vlo

+0

@Vlo Peut-être qu'il utilise les arts sombres! Bien que je me demande souvent si userRs trouve des applications que lui et ses collègues développeurs n'ont jamais imaginé. – AndrewMacDonald

Questions connexes