Zählen der Instanzen einer Bedingung pro Zeile R [duplizieren]
Diese Frage hat hier bereits eine Antwort:
Wie die Häufigkeit einer Zeichenfolge für jede Zeile in R @ gezählt wi 2 AntwortenIch habe eine große Datei mit der ersten Spalte IDs und den restlichen 1304 Spalten Genotypen wie unten.
rsID sample1 sample2 sample3...sample1304
abcd aa bb nc nc
efgh nc nc nc nc
ijkl aa ab aa nc
Ich möchte die Anzahl der "nc" -Werte pro Zeile zählen und das Ergebnis in einer anderen Spalte ausgeben, sodass ich Folgendes erhalte:
rsID sample1 sample2 sample3...sample1304 no_calls
abcd aa bb nc nc 2
efgh nc nc nc nc 4
ijkl aa ab aa nc 1
Die Tabellenfunktion zählt die Häufigkeiten pro Spalte und nicht pro Zeile. Wenn ich die in der Tabellenfunktion zu verwendenden Daten transponiere, muss die Datei folgendermaßen aussehen:
abcd aa[sample1]
abcd bb[sample2]
abcd nc[sample3] ...
abcd nc[sample1304]
efgh nc[sample1]
efgh nc[sample2]
efgh nc[sample3] ...
efgh nc[sample1304]
Mit diesem Format würde ich folgendes bekommen, was ich will:
ID nc aa ab bb
abcd 2 1 0 1
efgh 4 0 0 0
Hat jemand eine Idee für einen einfachen Weg, um Frequenzen nach Zeilen zu erhalten? Ich versuche dies gerade, aber es dauert ziemlich lange, bis es ausgeführt wird:
rsids$Number_of_no_calls <- apply(rsids, 1, function(x) sum(x=="NC"))