Добавление значений двух столбцов в заголовок таблицы данных непреднамеренных изменений столбца результата - PullRequest
0 голосов
/ 24 октября 2019

У меня есть фрейм данных, и я хочу добавить «итоговый» столбец с результатом суммы строк.

Начальная точка:

var1 var2
  1    2
  1    2
  1    2

Желаемый результат:

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

Мой код делает это, но изменяет имя заголовка столбца «total» на заголовок столбца var1. Почему? Что может быть лучшим решением?

Вот мой код:

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

Результат:

var1 var2 **var1**
  1    2    3
  1    2    3
  1    2    3

Ответы [ 3 ]

1 голос
/ 24 октября 2019

правильные способы сделать это:

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

обратите внимание на двойные скобки, ваше решение будет работать, если вы будете использовать двойные скобки вместо одинарных скобок

, как предложил Ронак:

df$total = rowSums(df)
0 голосов
/ 24 октября 2019

Это будет работать и не будет переименовывать вашу колонку. [i] возвращает data frame, где [[i]] возвращает numeric. Итак, вы хотите добавить отдельные номера.

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]] 
}
0 голосов
/ 24 октября 2019

Вы можете использовать mutate() -функцию

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...