2017-02-08 4 views
0

Ich habe eine (144, 1378) df; es besteht aus 13 Experimenten für 106 Parameter.Berechnung Korrelation zwischen jeweils 103 ersten Spalten und jeder der 106 nächsten, 12 Wiederholungen

Die erste Gruppe ist die Referenzgruppe. Ich möchte die Korr jedes der 106 Parameter für jede Gruppe in Bezug auf die erste Gruppe berechnen.

Das ist zum Beispiel, berechnen Sie die Korr Spalte 107 mit Spalte 1 -> Ergebnis mit dem Namen des Parameters und der Gruppe zurückgeben.

Dann wird die korr der Spalte 213 (107 + 106) mit Spalte 1 ... bis die Säule 1272 mit Spalte 1 ...

Aber ich habe Probleme in den ersten 106 Spalten als Bezugsgrundlage Festsetzung :-(

MK_comp_par1 <-sapply(seq(1, 1378, by=106),function(i) cor(bind_sc[,i:(i+1)], method ="kendall", use = "complete")) 
+0

Sie könnten 'focus()' aus dem Corrr-Paket nützlich finden. Hier ist ein Beitrag: https://drsimonj.svbtle.com/how-does-one-variable-correlate-with-allothers –

Antwort

0

ich dies ohne einige Beispieldaten nicht testen können, aber es sollte funktionieren.

MK_comp_par1 <- mapply(function(x,y) cor(bind_sc[,c(x,y)], method = "kendall", 
             use = "complete"), seq(1, 106), seq(107, 1378)) 

Dies sollte funktionieren wie der zweite Vektor ein genaues Vielfaches von der ersten ist, so mapply beginnt bei 1 für x alle 106 Iterationen.

Beachten Sie, dass dies Ihnen wahrscheinlich eine Liste der Ausgabe mit der Länge 1272 gibt, die Sie möglicherweise um 106 teilen möchten, um eine Liste der Korrelationsmatrizen für jedes Experiment zu erhalten.

2

Sie für so etwas suchen müssen:

bind_sc <- matrix(replicate(144*1378, rnorm(1)), nrow = 144) 
i <- seq(1, 1378, by=106) 
j <- seq(0, 105, by=1) 
Res = list() 
Res <- lapply(j,function(j,i) 
{ 
    cor(x=bind_sc[,j+1], y=bind_sc[,i+j], method ="kendall", use = "complete") 
},i) 

die [[i]] Wert der Liste des Res ist die Korrelation zwischen der i-ten Spalte Ihrer Daten mit den entsprechenden Daten in anderen Experimente. ich hoffe es hilft.

Verwandte Themen