2016-04-25 12 views
0

Ive erhielt die folgenden Daten von Tripadvisor:TM - Clustering Daten mit speziellen Datumsvariablen

'data.frame': 682 obs. of 6 variables: 
$ X   : int 1 2 3 4 5 6 7 8 9 10 ... 
$ id   : Factor w/ 674 levels "id","rn106322397",..: 672 671 670 669 668 667 666 665 664 663 ... 
$ quote  : Factor w/ 606 levels "\"Picturesque Lake Konigssee\"",..: 389 139 113 149 384 39 176 598 199 603 ... 
$ rating  : Factor w/ 6 levels "1","2","3","4",..: 3 5 5 5 4 5 5 5 4 5 ... 
$ date   : Factor w/ 505 levels "date","Reviewed 1 August 2014\n",..: 200 200 427 427 427 443 434 351 313 494 ... 
$ reviewnospace: Factor w/ 674 levels "- Good car parking facilities- Organized boat trips- Ensure that you have enough time at hand for the boat trip",..: 624 573 144 211 507 26 351 672 451 249 ... 

Ich versuche, die Daten auf der Basis des Datums clustern, zwei Gruppen zu bekommen - Winter und Sommerurlauber. Mit diesem Clustering möchte ich die Bewertungen anschließend analysieren. Ich bin mit dem tm Paket und versucht, es mit dem folgenden Code:

> x <- read.csv ("seeganz.csv", header = TRUE, stringsAsFactors = FALSE, sep = ",") 
> corp <- VCorpus(VectorSource(x$reviewnospace), readerControl = list(language = "eng")) 
> meta(corp,tag = "date") <- x$date 
> idx <- meta(corp, "date") == 'December' 

Aber es funktioniert nicht als Inhalt sagen 0 Dokumente:

> corp [idx] 
<<VCorpus>> 
Metadata: corpus specific: 0, document level (indexed): 1 
Content: documents: 0 

als das Datum hat die Struktur "Bewertet 1 August 2014 ", wie muss ich diesen Code anpassen, um zum Beispiel nur die Bewertungen von Nov - Feb zu bekommen?

Haben Sie eine Idee, wie ich dieses Problem lösen kann?

Vielen Dank.

Antwort

0

generischer Ansatz:

  • Verwenden substr(date, 10, nchar(date)) dateNew zu 1 August 2014 Aufruf dieser neue Vektor-Funktion
  • Verwenden normalen Datum zu erhalten, z.B. as.Date (dateNew, ...) dateNew in einen Vektor vom Typ Datum zu ändern, in dem Sie subsetting/Subtraktion und andere Operationen Referenzen von http://www.statmethods.net/input/dates.html

    # use as.Date() to convert strings to dates 
    mydates <- as.Date(c("2007-06-22", "2004-02-13")) 
    # number of days between 6/22/07 and 2/13/04 
    days <- mydates[1] - mydates[2] 
    
+0

danken Ihnen für Ihre Antwort tun können! Ich habe es mit dem folgenden Code versucht '> dateNew <- substr (Datum, 9, 24) > dateNew [1]" 27. Oktober 2015 "" 25. Oktober 2015 "" 23. Oktober 2015 "" 23. Oktober 2015 " [5 ] "21. Oktober 2015" "21. Oktober 2015" "21. Oktober 2015" "18. Oktober 2015" [9] "18. Oktober 2015" "17. Oktober 2015" > as.Datum (dateNew, "% d% B% Y ") [1] NA NA NA NA NA NA NA NA NA NA' Aber warum bekomme ich NAs ?? –

+0

@LauraHiemer: aktualisierte Antwort bitte überprüfen. Vielen Dank. Plus, ich denke, Sie müssen nchar (Datum) im Gegensatz zu der Zahl 24 versuchen. Der Grund ist nchar ("Bewertet am 25. Oktober 2015") = 24 und nchar ("Bewertet am 25. August 2015") = 23. – user2007598