Adicionando os valores de duas colunas em trama de dados alterações não intencionais cabeçalho de coluna resultado

votos
0

Eu tenho um quadro de dados e deseja adicionar uma coluna total com o resultado da soma das linhas.

Ponto de partida:

var1 var2
  1    2
  1    2
  1    2

Resultado desejado:

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

Meu código faz isso, mas muda o nome do cabeçalho da coluna total para o cabeçalho da coluna var1. Por quê? O que poderia ser uma solução melhor?

Aqui está o meu código:

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

Resultado:

var1 var2 **var1**
  1    2    3
  1    2    3
  1    2    3
Publicado 24/10/2019 em 11:59
fonte usuário
Em outras línguas...                            


3 respostas

votos
0

Você pode Youe a mutate()-função

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
Respondeu 24/10/2019 em 12:05
fonte usuário

votos
0

Isto irá funcionar e não vai mudar o nome da coluna. [i]devolve uma data frameonde, como [[i]]os retornos um numeric. Então, você deseja adicionar números individuais.

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]] 
}
Respondeu 24/10/2019 em 12:09
fonte usuário

votos
1

as maneiras corretas de fazer isso são:

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

observe os colchetes duplos, sua solução irá funcionar se você usar suportes de casal em vez de colchetes simples

como Ronak sugeriu:

df$total = rowSums(df)
Respondeu 24/10/2019 em 12:09
fonte usuário

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