Mam bardzo dużą ramkę danych z wierszami jako obserwacjami i kolumnami jako markerami genetycznymi. Chciałbym utworzyć nową kolumnę zawierającą sumę wybranej liczby kolumn dla każdej obserwacji przy użyciu R.
Jeśli mam 200 kolumn i 100 wierszy, chciałbym utworzyć nową kolumnę zawierającą 100 wierszy z sumą, powiedzmy, kolumn od 43 do 167. Kolumny mają 1 lub 0. Nowa kolumna zawierająca sumę każdego z nich wiersz, będę mógł posortować osoby, które mają najwięcej markerów genetycznych.
Czuję, że jest to coś bliskiego:
data$new=sum(data$[,43:167])
data$new <- rowSums(data[43:167])
rowsum
która robi coś innego!Funkcja rowSums (jak wspomina Greg) zrobi, co chcesz, ale w swojej odpowiedzi mieszasz techniki podzestawiania, nie używaj "$" podczas używania "[]", twój kod powinien wyglądać mniej więcej tak:
data$new <- rowSums( data[,43:167] )
Jeśli chcesz użyć funkcji innej niż suma, spójrz na zastosowanie funkcji ogólnych w wierszach lub kolumnach.
źródło
incomeData
nie jest on numeryczny. Użyj czegoś takiego, jak,str(incomeData)
aby zobaczyć, co to jest, a następnie prawdopodobnie przekonwertuj to na macierz numeryczną.Przyszedłem tutaj z nadzieją, że znajdę sposób na uzyskanie sumy we wszystkich kolumnach tabeli danych i napotkam problemy implementujące powyższe rozwiązania. Sposobem dodania kolumny z sumą we wszystkich kolumnach jest
cbind
funkcja:Ta metoda dodaje
total
kolumnę do danych i pozwala uniknąć problemu z wyrównaniem wynikającego z próby sumowania we WSZYSTKICH kolumnach przy użyciu powyższych rozwiązań (zobacz poniższy post, aby zapoznać się z omówieniem tego problemu).Dodanie nowej kolumny do błędu macierzy
źródło