2012-11-20 30 views
14

Chciałbym obliczyć sumy dla niektórych kolumn, a następnie zastosować to sumowanie dla każdego wiersza. Niestety, mogę zrobić tylko pierwszy krok. Jak mam teraz to zrobić dla każdego rzędu? Wiem, że R nie potrzebuje pętli, ale jakie byłoby właściwe podejście?suma komórek niektórych kolumn dla każdego wiersza

Moja macierz (zscore) wygląda następująco:

a b c t y 
1 3 4 7 7 4 

2 4 56 6 6 4 

3 3 3 2 1 7 

4 3 88 9 9 9 

Teraz chciałbym obliczyć sumę wiersza dla każdego wiersza, w oparciu o niektóre z colums. Dla jednego wiersza może wyglądać tak:

f1 <- sum(zscore[1,1:2], zscore[1,3], zscore[1,5]) 

Jak to zrobić teraz dla każdego rzędu?

Odpowiedz

33

Można zrobić coś takiego:

summed <- rowSums(zscore[, c(1, 2, 3, 5)]) 
+0

NIESAMOWITE, zrobiłem to z pętlą w międzyczasie, ale twoje rozwiązanie to WAY! – user1807857

+0

Taka jest moc R :) – alestanis

0

Jeśli nie masz NA można zastosować tę

suma.zscore = (zscore$a + zscore$c + zscore$t + zscore$y) 
+0

zależnie od ramki danych lub matrycy, ponieważ może to być numer, aby uzyskać dodatkowe funkcje takie jak: suma.zscore = (as.numeric (zscore $ a) + as.numeric (zscore $ c) ... itd.) –

0

Jeśli tabela zawiera kolumny non-numeryczne, upewnij się je wykluczyć w rowSum.

Powiązane problemy