Ich bin sehr neu zu R und Probleme beim Ausführen von Funktionen, um die Antworten zu bekommen, die ich brauche. Ich habe beispielsweise Daten PCSTestHilfe mit R und Gruppierung/Aggregat/* apply/data.table
, die etwa wie folgt aussieht:
Date Site Word
--------------------------------------
9/1/2012 slashdot javascript
9/1/2012 stackexchange R
9/1/2012 reddit R
9/1/2012 slashdot javascript
9/1/2012 stackexchange javascript
9/5/2012 reddit R
9/8/2012 slashdot javascript
9/8/2012 stackexchange R
9/8/2012 reddit R
9/8/2012 slashdot javascript
9/18/2012 stackexchange R
9/18/2012 reddit R
9/18/2012 slashdot javascript
9/18/2012 stackexchange R
9/27/2012 reddit R
9/27/2012 slashdot R
Mein Ziel für Trends in den Vorkommen verschiedenen Worte zu sehen aus, als sie auf Websites im Laufe der Zeit beziehen. Ich kann sie zählen:
library(plyr)
PCSTest <- read.csv(file="c:/PCS/PCS Data - Test.csv", header=TRUE)
PCSTest$Date <- as.Date(PCSTest$Date, "%m/%d/%Y")
PCSTest$Date <- as.POSIXct(PCSTest$Date)
countTest <- count(PCSTest, c("Date", "Site", "Word"))
das gibt dies:
Date Site Word freq
1 2012-08-31 20:00:00 reddit R 4
2 2012-08-31 20:00:00 slashdot javascript 7
3 2012-08-31 20:00:00 stackexchange javascript 1
4 2012-08-31 20:00:00 stackexchange R 2
5 2012-09-01 20:00:00 reddit javascript 2
6 2012-09-01 20:00:00 slashdot R 3
7 2012-09-04 20:00:00 reddit R 1
8 2012-09-07 20:00:00 reddit R 1
9 2012-09-07 20:00:00 slashdot javascript 2
10 2012-09-07 20:00:00 stackexchange R 1
11 2012-09-09 20:00:00 stackexchange javascript 4
12 2012-09-10 20:00:00 slashdot R 4
13 2012-09-14 20:00:00 reddit javascript 4
14 2012-09-17 20:00:00 reddit R 4
15 2012-09-17 20:00:00 slashdot javascript 1
16 2012-09-17 20:00:00 stackexchange R 2
17 2012-09-19 20:00:00 reddit javascript 2
18 2012-09-23 20:00:00 stackexchange javascript 2
19 2012-09-24 20:00:00 reddit javascript 3
20 2012-09-24 20:00:00 stackexchange javascript 1
21 2012-09-24 20:00:00 stackexchange R 4
22 2012-09-25 20:00:00 reddit javascript 5
23 2012-09-25 20:00:00 slashdot javascript 3
24 2012-09-25 20:00:00 stackexchange R 7
25 2012-09-26 20:00:00 reddit R 1
26 2012-09-26 20:00:00 slashdot R 5
oder zeichnen sie alle:
library(ggplot2)
ggplot(data=countTest, aes(x=Date, y=freq, group=interaction(Site, Word), colour=interaction(Site, Word), shape=Site)) + geom_line() + geom_point()
Ich brauche jetzt einige Berechnungen auf den Daten zu tun , also habe ich versucht, Aggregat
aggregate(freq ~ Site + Word, data = countTest, function(freq) cbind(mean(freq), max(freq)))[order(-agg$freq[,3]),]
die gibt:
Site Word freq.1 freq.2
2 slashdot javascript 3.25 7.00
5 slashdot R 4.00 5.00
1 reddit javascript 3.20 5.00
4 reddit R 2.20 4.00
6 stackexchange R 3.20 7.00
3 stackexchange javascript 2.00 4.00
Was ich in diesem letzten Ergebnis möchte eine Spalte, die die durchschnittliche Häufigkeit pro Tag hat, so etwas wie ... Summe (Freq)/20 Tage, von dem berechneten Daten, vielleicht sogar ein gleitender Durchschnitt. Auch möchte ich eine andere Spalte mit der Steigung/lineare Regression. Wie würde ich das in der Aggregatfunktion berechnen?
Oder, wie würde ich das alles besser/schneller machen? Ich weiß, dass es apply und data.table Funktionen gibt, aber ich sehe nicht, wie ich sie verwenden würde. Jede Hilfe würde sehr geschätzt werden!
@Oleg Sie erwähnten, dass Sie die durchschnittliche Häufigkeit für 20 Tage in Ihrer Frage erhalten möchten. Wenn Sie den Datumsbereich angeben möchten, können Sie 'filter()' verwenden. Du unterteilst mit 'filter()'. Etwas wie das. 'filter (d, Datum> =" 2012-09-01 ", Datum <=" 2012-09-25 ")' – jazzurro