Как я могу объединить / суммировать строки, которые имеют одинаковое значение в данном столбце. Затем гистограмма. R studio - PullRequest
1 голос
/ 30 апреля 2020

Я использую R studio.

Я отфильтровал некоторые данные, чтобы создать новый тиббл, который имеет только 2 переменные.

df1 <- df %>% dplyr::select(Species, Weight)

, который дает мне некоторые примеры данных, так что

   Species  Weight
1    Dog      7
2    Cat      2
3    Dog      5
4    Dog      4
.     .       .
.     .       .
245  Cat      3
246  Dog      9
247  Cat      2

Это пример данных, поскольку данные, которые я использую, на самом деле содержат 25 видов Fi sh. Как я могу сложить вес каждого вида вместе, чтобы у нас был только один вид в каждом ряду, например:

   Species  Weight
1    Dog      734
2    Cat      257

Как я хотел бы затем отобразить вид против общего веса в гистограмме.

Любая помощь с кодом гистограммы была бы очень признательна!

Большое спасибо.

1 Ответ

1 голос
/ 30 апреля 2020

Мы можем сгруппировать по «Видам», а затем сделать sum для «Веса», а затем построить график с помощью geom_col из ggplot2

library(dplyr)
df %>%
      group_by(Species) %>%
      summarise(Weight = log(sum(Weight))) %>% 
      ggplot(aes(x = Species, y = Weight)) + 
              geom_col()

Или в base R

aggregate(Weight ~ Species, df, sum)

Если нам нужен барплот, тогда используйте

barplot(rowsum(df$Weight, df$Species)[,1])

Если нам нужен log, то оберните с log

barplot(log(rowsum(df$Weight, df$Species))[,1])

данные

df  <- structure(list(Species = c("Dog", "Cat", "Dog", "Dog", "Cat", 
"Dog", "Cat"), Weight = c(7L, 2L, 5L, 4L, 3L, 9L, 2L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "245", "246", "247"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...