Adăugarea valorilor două coloane în dataframe schimbări neintenționate antetul coloanei rezultat

voturi
0

Am un cadru de date și doriți să adăugați o coloană „totală“, cu rezultatul suma rândurilor.

Punct de start:

var1 var2
  1    2
  1    2
  1    2

Rezultatul dorit:

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

Codul meu face acest lucru, dar își schimbă numele antetul coloanei „total“ în antetul coloanei var1. De ce? Ce ar putea fi o soluție mai bună?

Aici este codul meu:

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

Rezultat:

var1 var2 **var1**
  1    2    3
  1    2    3
  1    2    3
Întrebat 24/10/2019 la 11:59
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
0

Puteți youe mutate()-funcție

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
Publicat 24/10/2019 la 12:05
sursa de către utilizator

voturi
0

Acest lucru va funcționa și nu va redenumi coloana. [i]returnează o în data framecazul în care ca și [[i]]returnează o numeric. Deci, doriți să adăugați numere individuale.

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]] 
}
Publicat 24/10/2019 la 12:09
sursa de către utilizator

voturi
1

modurile corecte de a face acest lucru sunt:

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

nota duble paranteze, soluția va funcționa dacă utilizați paranteze duble în loc de paranteze unice

după cum a sugerat Ronak:

df$total = rowSums(df)
Publicat 24/10/2019 la 12:09
sursa de către utilizator

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