som rijen in gegevens.frame of matrix

Ik heb een zeer grote dataframe met rijen als observaties en kolommen als genetische markers. Ik wil graag een nieuwe kolom maken die de som van een select aantal kolommen bevat voor elke observatie met behulp van r.

Als ik 200 kolommen en 100 rijen heb, zou ik graag een nieuwe kolom maken die 100 rijen heeft met de som van zegkolommen 43 tot en met 167. De kolommen hebben 1 of 0. met de nieuwe kolom die de nieuwe kolom bevat Som van elke rij, ik zal de individuen kunnen sorteren die de meest genetische markeringen hebben.

Ik vind het iets in de buurt van:

data$new=sum(data$[,43:167])

Antwoord 1, Autoriteit 100%

U kunt rowSums

gebruiken

rowSums(data)zou u moeten geven wat u wilt.


Antwoord 2, Autoriteit 35%

De Rowsums-functie (zoals Greg-vermeldingen) doen wat u wilt, maar u mengt subsettingtechnieken in uw antwoord, gebruik geen “$” bij gebruik “[]”, uw code moet er iets meer uitzien als:

data$new <- rowSums( data[,43:167] )

Als u een andere functie dan som wilt gebruiken, kijk dan eens naar? Toepassen voor het toepassen van algemene functies Accreditrijen of kolommen.


Antwoord 3, Autoriteit 6%

Ik kwam hier in de hoop een manier te vinden om de som in alle kolommen in een gegevenstabel te krijgen en in problemen met de implementatie van de bovenstaande oplossingen te voeren. Een manier om een ​​kolom toe te voegen met de som in alle kolommen gebruikt de cbindFUNCTION:

cbind(data, total = rowSums(data))

Deze methode voegt een totalkolom toe aan de gegevens en vermijdt het uitlijningsprobleem dat wordt opgegeven bij het optellen van alle kolommen met behulp van de bovenstaande oplossingen (zie de onderstaande post voor een bespreking van deze kwestie).

Voeg een nieuwe kolom toe aan matrixfout


Antwoord 4

Dit kan ook helpen, maar de beste optie is buiten eventuele twijfel de rowSumsfunctie:

data$new <- Reduce(function(x, y) {
  x + data[, y]
}, init = data[, 43], 44:167)

Other episodes