2016-03-29 13 views
-6

Ich habe einen Datenrahmen mit 16 Spalten, und ich möchte am Ende eine Spalte mit der Zeilenvarianz der Spalten 4-16 hinzufügen. Dies würde auch die NA-Werte ignorieren.Varianzspalte im R-Datenrahmen hinzufügen

Daten sieht wie folgt aus etwas:

Chr Position end IA3023 Nam6 Nam9 ... 
18 1  2 0.5  0.5 0.5 
18 2  3 0  0.25 0.5 
18 3  4 0.5  0.3 0.25 

Möchten sie eine Reihe Varianz in letzten Spalte hinzuzufügen:

Chr Position end IA3023 Nam6 Nam9 ... RowVariance 
18 1  2 0.5  0.5 0.5  0 
18 2  3 0  NA 0.5  0.125 
18 3  4 0.5  0.3 0.25  0.0175 
+1

Welches Problem bist du begegnet? –

+1

Schauen Sie sich die 'apply'-Funktion an. – RoyalTS

+0

Wie hoffen Sie, die Varianz von 12 verschiedenen Funktionen in einer Spalte zu aggregieren? – Tgsmith61591

Antwort

1

df der gegebenen Datenrahmen

gewünschte Ausgabe von dieser Linie kommen

 cbind(df, var = apply(df[,4:16], 1, function(x) var(na.omit(x)))) 
+0

Erro r in df [, 4:16]: Objekt vom Typ 'closure' ist keine Teilmengenliste –

+0

Das hat fabelhaft funktioniert! Vielen Dank! Ich habe jedoch nicht den Vertreter zu upvote –

1

Nun, die Frage ist wirklich vage und hat keine ein Beispiel.

Angenommen, Sie Reihe Varianz gemeint:

library(data.table) 
DT <- data.table(df) 
DT[, rowvars := .(rowSums(DT[, 4:16, with = FALSE], na.rm = TRUE)^2/(13-1))] 

sehen, ob es funktioniert

+0

Empfangen folgenden Fehler: 'Fehler in '[.data.frame' (DT,,': = '(rowvars, (rowSums (DT [, 4:16, mit = FALSE],: konnte die Funktion nicht finden": = "' –

+0

Haben Sie die Daten geladen? .table Paket, ich habe es getestet, und es funktioniert gut für mich. – fhlgood

+0

Fehler in '[.data.table' (DT,, 4:16, mit = FALSE): j außerhalb der Grenzen –

Verwandte Themen