Ajout de valeurs de deux colonnes en-tête de trame de données des modifications involontaires de la colonne de résultat

voix
0

J'ai une trame de données et que vous souhaitez ajouter une colonne « total » avec le résultat de la somme des lignes.

Point de départ:

var1 var2
  1    2
  1    2
  1    2

Résultat désiré:

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

Mon code fait cela, mais change le nom de l'en-tête de la colonne « total » à l'en-tête de la colonne var1. Pourquoi? Ce qui pourrait être une meilleure solution?

Voici mon 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

Résultat:

var1 var2 **var1**
  1    2    3
  1    2    3
  1    2    3
Créé 24/10/2019 à 11:59
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
0

Vous pouvez Youé le mutate()-fonction

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
Créé 24/10/2019 à 12:05
source utilisateur

voix
0

Cela fonctionne et il ne sera pas renommer votre colonne. [i]retourne un data frameoù que [[i]]renvoie un numeric. Donc, vous voulez ajouter des numéros individuels.

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]] 
}
Créé 24/10/2019 à 12:09
source utilisateur

voix
1

les bonnes façons de le faire sont les suivantes:

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

noter les doubles crochets, votre solution fonctionnera si vous utilisez des doubles crochets au lieu des crochets simples

comme Ronak suggéré:

df$total = rowSums(df)
Créé 24/10/2019 à 12:09
source utilisateur

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