Temat: Oddzielenie danych z jednej zmiennej w R

Mam problem ponieważ dane jakie posiadam w jednej kolumnie zawierają date oraz czas zdarzenia. Mniej więcej coś takiego 1/1/2010 12:12:12. Potrzebuje z tego wydzielić tylko godzinę, da sie to zrobić?
Piotr Ocalewicz

Piotr Ocalewicz Statystyka, Analiza
Danych, Data Mining,
Raportowanie

Temat: Oddzielenie danych z jednej zmiennej w R

Najprościej z datami radzić sobie za pomocą pakietu lubridate. Najpierw mówisz programowi że ma traktować przekazany przez Ciebie ciąg znaków jako datę i godzinę a potem wyciągasz samą godzinę:
 
library(lubridate)
data <- dmy_hms("1/1/2010 12:12:12")
hour(data)


Wynikem tego kodu będzie liczba 12. Oczywiście za parametr funkcji dmy_hms podstawiasz nazwę zmiennej zawierającej datę. Więcej przydatnych informacji znajdziesz na stronie https://github.com/tidyverse/lubridate

EDIT
Pomyślałem, że może jednak jako godzinę rozumiesz wszystko oprócz daty, tj. godziny, minuty i sekundy. Wtedy możesz odpalić pakiet stringr i skorzystać z funkcji word:

library(stringr)
word("1/1/2010 12:12:12", start = 2)


Wynikiem będzie ciąg znaków "12:12:12", który potem możesz zamienić na czas. Generalnie sposobów rozwiązania tego zadania jest co najmniej kilka, Ten post został edytowany przez Autora dnia 03.06.17 o godzinie 20:14

Temat: Oddzielenie danych z jednej zmiennej w R

Używając "czystego" R:

 > strftime("2011-01-02 10:22:33")
[1] "2011-01-02 10:22:33"

> strftime("2011-01-02 10:22:33", format="%H")
[1] "10"

> strftime("2011-01-02 14:22:33", format="%H")
[1] "14"

> strftime("2032/12/22 01:22:33", format="%H")
[1] "01"

Temat: Oddzielenie danych z jednej zmiennej w R

Dziękuje za odpowiedzi ale nie do końca chodziło mi o wywołanie tego z jednej linii. Otóż moje dane mają pareset tysięcy wierszy i potrzebuje z każdego z nich wyciągnąć właśnie tą godzinę( w sensie HH:MM:SS). Ogólnie zadanie polega na policzeniu przypadków z całego miesiąca w danych godzinach i pomyslalem ze wpierw usunięcie daty będzie najlepszym posunięciem gdyż ona jest dla mnie zupełnie niepotrzebna.
Piotr Ocalewicz

Piotr Ocalewicz Statystyka, Analiza
Danych, Data Mining,
Raportowanie

Temat: Oddzielenie danych z jednej zmiennej w R

Ale my nie piszemy, żebyś każdą datę pakował pojedynczo do funkcji ;) Przynajmniej tak zrozumiałem twoje ostatnie pytanie. Przyjmijmy dla uproszczenia, że masz tabelę o nazwie x, w której są dwie kolumny: "numer" oraz "data". Kiedy wywołasz następujący kod:


x <- data.frame(numer = c(1:3), data = c("2011-01-02 10:22:33","2011-01-02 11:00:22","2011-01-02 12:15:01"))

head(x)
numer data
1 1 2011-01-02 10:22:33
2 2 2011-01-02 11:00:22
3 3 2011-01-02 12:15:01

strftime(x$data, format = "%H")
[1] '10' '11' '12'


to otrzymasz wektor zawierający godzinę dla wszystkich wierszy w tabeli. R pracuje na wektorach, więc nie musisz w tym przypadku używać np. pętli for lub czegoś podobnego.Ten post został edytowany przez Autora dnia 05.06.17 o godzinie 13:05

Następna dyskusja:

Wczytywanie danych z pliku ...




Wyślij zaproszenie do