как суммировать несколько столбцов в r?

#r

Вопрос:

Я хотел бы суммировать несколько столбцов в моем фрейме данных. Например, используя r-базу iris

Я хотел бы, например, суммировать отдельные столбцы.Длина, Лепесток.Длина и Лепесток.Ширина

Я пытался colSums , но это не сработало.

  df<-iris%>%
  select(-Species)%>%
  colSums([1:4])
 

Обновление: Я попытался изменить вопрос ближе к моей реальности.

Комментарии:

1. colSums(iris[,1:4])

2. можно ли использовать %>% для этого оператора трубы?

3. iris %>% dplyr::select(1:4) %>% colSums() ??

Ответ №1:

Я думаю, ты хочешь сделать

 colSums(iris[1:4])
 

или

 iris[1:4] %>% colSums()
 

Другими вариантами %>% использования трубы являются

 iris %>% 
  select(Sepal.Length,  Sepal.Width, Petal.Length,  Petal.Width) %>% 
  colSums()
 

или с помощью новой across функции

 iris %>% 
  summarise(across(1:4, sum))
 

Более подробный вариант, но мне нравится использовать его при добавлении минимального, максимального квартиля и т. Д.

 iris %>% 
  summarise(Sepal.Length = sum(Sepal.Length),  
            Sepal.Width  = sum(Sepal.Width), 
            Petal.Length = sum(Petal.Length),  
            Petal.Width  = sum(Petal.Width))
 

Комментарии:

1. как мне не добавить 3-ю колонку?

2. Например iris %>% select(-3) %>% colSums() , или iris %>% select(-Species) %>% colSums()

3. iris %>% summarise(across(1:4, sum)) это здорово

4. Я заметил, что » iris %>% суммирует(поперек(«Sepal. Длина»:»Лепесток. Ширина’, сумма))’ также еще лучше.

Ответ №2:

Мы можем использовать base R

 sapply(iris[1:4], sum)
 

Ответ №3:

Вот еще один трюк с базой R с aggregate

 > aggregate(. ~ is.na(Species), iris, sum)[-1]
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1        876.5       458.6        563.7       179.9     300
 

или (спасибо @akrun за комментарии)

 aggregate(. ~ Species, transform(iris, Species = 1), sum)
 

Комментарии:

1. @akrun Ха-ха, да, именно так!