Erste Teilmenge der Daten basierend auf mehrere Werte in der Spalte
Ich versuche mich zu entfernen von Zeilen basierend auf, ob oder nicht, Spalten 2 und 3 enthalten die 0. Ich bekomme sehr seltsame Ergebnisse. Ich habe versucht, es zu schreiben, ohne subset
zunächst, weil ich habe irgendwo gelesen, dass subset
sollte nur verwendet werden für kleine Mengen von Daten, da der Speicher Kosten. Weder Versuch arbeitete für mich aber. Kann mir jemand erklären, was ich falsch gemacht habe?
df <- data.frame(val1=c(1,2,3), val2=c(4,0,5), val3=c(3,0,6))
subset(df,df>0,c(2,3))
data.frame(df[df[,c(2,3)]!=0])
Ziel:
val1 val2 val3
1 1 4 3
3 3 5 6
InformationsquelleAutor Rilcon42 | 2015-09-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mithilfe der
subset
wir erstellen einen logischen index auf der Grundlage der 2. und Dritten Spalten.als
subset
argument funktioniert auf Spalten und nicht auf Matrizen.Wir können auch
[
stattsubset
.Bezüglich der zweiten Antwort in den OP ' s post
Für ausgewählte Zeilen, wir brauchen nur einen einzigen logischen index pro Zeile.
Weitere option ist
rowSums
(wenn Sie möchten, entfernen Sie Zeilen, 0 Spalten 2 und 3)d.h.
zurückkehren wird, werden alle Zeilen mit
rowSums
während die anderen Methoden zurück, Zeilen 1 und 3.Die entsprechende option mit
subset
ist&
InformationsquelleAutor akrun