Toevoegen van waarden van twee kolommen in dataframe onbedoelde veranderingen kop van resultaatkolom

stemmen
0

Ik heb een data frame en willen een kolom totaal toe te voegen met het resultaat van de som van de rijen.

Startpunt:

var1 var2
  1    2
  1    2
  1    2

Gewenste resultaat:

var1 var2 total
  1    2    3
  1    2    3
  1    2    3

Mijn code doet dat, maar verandert de naam van de kop van de kolom totaal aan de header van var1 kolom. Waarom? Wat zou een betere oplossing zijn?

Hier is mijn code:

df<-data.frame( var1=c(1,1,1), var2=c(2,2,2))
df[total]<-0

for (i in 1:2 ){
  df$total = df$total + df[i] 
}
df

Resultaat:

var1 var2 **var1**
  1    2    3
  1    2    3
  1    2    3
De vraag is gesteld op 24/10/2019 om 11:59
bron van user
In andere talen...                            


3 antwoorden

stemmen
0

U kunt de Youe mutate()-functie

library(tidyverse)

df<-df%>%mutate(total=rowsum(var1,var2))

> df
  var1 var2 total
1    1    2     3
2    1    2     3
3    1    2     3
antwoordde op 24/10/2019 om 12:05
bron van user

stemmen
0

Dit zal werken en het zal je column niet hernoemen. [i]geeft een data framewaar zoals [[i]]terugkeert een numeric. Dus, wilt u individuele nummers toe te voegen.

df<-data.frame( "var1"=c(1,1,1), "var2"=c(2,2,2))
df["total"]<-0

for (i in 1:2){
  df$total = df$total + df[[i]] 
}
antwoordde op 24/10/2019 om 12:09
bron van user

stemmen
1

de juiste manieren om dit te doen zijn:

df$total = df$var1 + df$var2
df[["total"]] = df[["var1"]] + df[["var2"]]

let op de dubbele beugels, zal uw oplossing te werken als u dubbele haakjes in plaats van enkele haakjes

als Ronak voorgesteld:

df$total = rowSums(df)
antwoordde op 24/10/2019 om 12:09
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more