/ / R und an Datenrahmen anhängen - r

R und an Datenrahmen anhängen - r

Ich habe einige Kreuzkorrelationsfunktion Crosscor,und ich möchte die Funktion für jede der Spalten, die ich in meiner Datenmatrix habe, durchlaufen. Die Funktion gibt eine Kreuzkorrelation aus, die bei jeder Ausführung ungefähr so ​​aussieht:

     Lags Cross.Correlation     P.value
1     0     -0.0006844958 0.993233547
2     1      0.1021006478 0.204691627
3     2      0.0976746274 0.226628526
4     3      0.1150337867 0.155426784
5     4      0.1943150900 0.016092041
6     5      0.2360415470 0.003416147
7     6      0.1855274375 0.022566685
8     7      0.0800646242 0.330081900
9     8      0.1111071269 0.177338885
10    9      0.0689602574 0.404948252
11   10     -0.0097332533 0.906856279
12   11      0.0146241719 0.860926388
13   12      0.0862549791 0.302268025
14   13      0.1283308019 0.125302070
15   14      0.0909537922 0.279988895
16   15      0.0628012627 0.457795228
17   16      0.1669241304 0.047886605
18   17      0.2019811994 0.016703619
19   18      0.1440124960 0.090764520
20   19      0.1104842808 0.197035340
21   20      0.1247428178 0.146396407

Ich würde gerne alle Listen zusammenstellenSie sind in einem Datenrahmen und exportieren sie schließlich in eine CSV-Datei, so dass die Spalten wie folgt sind: lags.3, Kreuzkorrelation.3, p-Wert.3, lags.3, Kreuzkorrelation.2 ... .etc. bis p.value.50.

Ich habe versucht, do.call wie folgt zu verwenden, war aber nicht erfolgreich:

    for(i in 3:50)
{
l1<-crosscor(data[,2], data[,i], lagmax=20)
ccdata<-do.call(rbind, l1)
cat("Data row", i)
}

Ich habe auch versucht, gerade den Datenrahmen gerade zu verursachen, aber erhalte gerade die Verzögerungsspaltennamen:

    ccdata <- data.frame()
for(i in 3:50)
{
ccdata[i-2:i+1]<-crosscor(data[,2], data[,i], lagmax=20)
cat("Data row", i)
}

Was mache ich falsch? Oder gibt es eine Online-Quelle zu Datensätzen, auf die ich zugreifen könnte, um herauszufinden, wie das geht? Beste,

Antworten:

0 für die Antwort № 1

Es gibt eine Transpose-Methode für data.frames. Wenn "crosscor" der Name des Objekts ist, versuchen Sie Folgendes:

 tcrosscor <- t(crosscor)
write.csv(tcrosscor, file="my_crosscor_1.csv")

Die erste Reihe wäre die Lag 's, die zweite Reihe,die Kreuzkorrelation "s; die dritte Reihe der P.value" s. Ich nehme an, Sie könnten es weiter "abflachen", so dass es ganz "horizontal" oder "breit" wäre. Scheint schmerzhaft, aber das könnte etwa so aussehen:

 single_line <- as.data.frame(unlist(tcrosscor))
names(single_line) <- paste("Lag", "Cross.Correlation", "P.value"), rep(1:50, 3), sep=".")
write.csv(single_line, file="my_single_1.csv")