#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 Ха-ха, да, именно так!