Ich habe einen sehr großen Datenrahmen mit Zeilen als Beobachtungen und Spalten als genetische Marker. Ich möchte eine neue Spalte erstellen, die die Summe einer ausgewählten Anzahl von Spalten für jede Beobachtung mit R enthält.
Wenn ich 200 Spalten und 100 Zeilen habe, möchte ich eine neue Spalte mit 100 Zeilen mit der Summe der Spalten 43 bis 167 erstellen. Die Spalten haben entweder 1 oder 0. Mit der neuen Spalte, die die Summe jeder Spalte enthält Reihe, ich werde in der Lage sein, die Personen zu sortieren, die die meisten genetischen Marker haben.
Ich denke, es ist etwas in der Nähe von:
data$new=sum(data$[,43:167])
data$new <- rowSums(data[43:167])
rowsum
die etwas anderes bewirken!Die rowSums-Funktion (wie Greg erwähnt) macht, was Sie wollen, aber Sie mischen Teilmengen-Techniken in Ihrer Antwort. Verwenden Sie nicht "$", wenn Sie "[]" verwenden. Ihr Code sollte ungefähr so aussehen:
data$new <- rowSums( data[,43:167] )
Wenn Sie eine andere Funktion als sum verwenden möchten, lesen Sie? Anwenden, um allgemeine Funktionen zeilen- oder spaltenübergreifend anzuwenden.
quelle
incomeData
nicht numerisch ist. Verwenden Sie so etwas wie, umstr(incomeData)
zu sehen, was es ist, und konvertieren Sie es dann möglicherweise in eine numerische Matrix.Ich kam hierher in der Hoffnung, einen Weg zu finden, um die Summe über alle Spalten in einer Datentabelle zu erhalten und auf Probleme bei der Implementierung der oben genannten Lösungen zu stoßen. Eine Möglichkeit, eine Spalte mit der Summe über alle Spalten hinweg hinzuzufügen, verwendet die folgende
cbind
Funktion:Diese Methode fügt
total
den Daten eine Spalte hinzu und vermeidet das Ausrichtungsproblem, das beim Versuch entsteht, mithilfe der oben genannten Lösungen über ALLE Spalten zu summieren (eine Erläuterung dieses Problems finden Sie im folgenden Beitrag).Hinzufügen einer neuen Spalte zum Matrixfehler
quelle