so entfernen Sie die negativen Werte aus einer Daten-frame in R
Ich will entfernen die negativen Werte aus einem dataframe und dann muss ich berechnen Sie den Mittelwert jeder Zeile getrennt (Mittelwert der positiven Werte für jede Zeile)
Ich schrieb, um negative Werte, aber es hat nicht funktioniert. Ich habe eine Warnung wie :
Fehler in
[<-.data.frame
(*tmp*
, i, j, Wert = NULL) :
Ersatz hat die Länge null
Wie kann ich dieses problem beheben?
for (i in 1:1000) {
for(j in 1:20){
if (dframe[i,j]<=0) dframe[i,j]<-NULL
j=j+1
}
i=i+1
}
- Sie können keine NULL-Werte in den Daten.frames. Sie können diese zu
NA
was "fehlt. Und dann können SierowSums(..., na.rm=T)
zu ignorieren, die NA-Werte. - danke @MrFlick
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchte ich noch hinzufügen, dass es nicht notwendig zu schreiben, eine for-Schleife, können Sie nur setzen:
Als
dframe < 0
gibt die logischen Indizes WAHR, wo dframe kleiner als null ist, und kann verwendet werden, um index-dframe und ersetzen WAHREN Werte mit NA.@MrFlick erklärt, die Verwendung von NA anstelle von NULL, und wie Sie zu ignorieren, NA-Werte bei der Berechnung bedeutet, dass in jeder Zeile:
Bearbeitet zu Antwort Frage erneut: rowMeans Herstellung von NaNs und wie Sie diese entfernen:
NA ist "nicht verfügbar" und ist ein missing-value-Indikator, während NaN "not a number", die produziert werden kann, wenn das Ergebnis einer arithmetischen operation kann nicht definiert werden, numerisch, z.B. 0/0. Ich kann nicht sehen, Ihr dframe Werte, aber ich würde vermuten, dass dies die Folge der Einnahme der Zeile bedeutet, wenn alle Zeilen-Werte sind NA -, während die Einstellung, na.rm=TRUE. Sehen Sie den Unterschied zwischen Mittelwert(c(NA, NA, NA), na.rm=TRUE) vs. Mittelwert(c(NA, NA, NA), na.rm=FALSE). Lassen Sie NaN oder entscheiden Sie, wie zu definieren, die Zeile bedeutet, wenn alle Zeilen-Werte negativ sind und ersetzt wurden durch NA.
Betrachten nur die nicht-NaN-Werte können Sie die Teilmenge nicht NaN mit
!is.nan
siehe dieses Beispiel:Ersetzt oder NaN-Werte mit einigen gewünschten Wert durch Einstellung
mea[is.nan(mea)] <- ??
rowMeans
, nichtrowSums
.Einen einfacheren Weg, um entfernen Sie alle Zeilen mit negativen Werten, Ihrer dataframe wäre:
Diese Weise jede Zeile mit dem negativen Wert einzustellen, um in deiner dataframe.
Es ist ein weiterer Weg, das könnte jemand helfen.
Ich hatte das gleiche problem vor, Allerdings habe ich entscheiden, zu verwenden dplyr für dieses problem.
Ich würde auch Ratschläge, um beide (positive und negative) einige Male werden Sie erforderlich sein, nachdem eine weitere Klärung solcher ist das, warum Sie negativ-oder anderen Fällen.
dies macht es einfacher, die hand aus, um andere Menschen und auf Fehler überprüfen, wenn erforderlich oder Gründe, warum negativ ist.
praktisch für Finanz-Fällen oder Daten, die manipuliert wurden, auch für andere Mitarbeiter