суммировать итоговые цифры c cols по категориальному col, используя dplyr - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь обобщить следующий набор данных .... вот это dput

structure(list(sentiment_desc = c("positive", "negative", "negative", 
"negative", "negative", "negative", "negative", "positive", "positive", 
"negative", "positive", "positive", "negative", "negative", "negative", 
"positive", "positive", "positive", "positive", "positive"), 
    relationship = c(1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), portfolio = c(0L, 
    1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
    0L, 0L, 1L, 0L), vfm = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L), ease = c(0L, 
    1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 
    0L, 1L, 0L, 0L), Innovation = c(1, 0, 0, 0, 0, 1, 0, 1, 0, 
    0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1), Customer_Focus = c(0, 0, 
    0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1), people = c(1, 
    1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1)), row.names = c(NA, 
-20L), class = c("tbl_df", "tbl", "data.frame"))

В нижней строке. Я хочу показать итоговое значение, т.е. sum для каждого столбца от relationship до people. Просто добавьте, если был один ... и затем посчитайте, сколько negative, positve было в каждом col. Например: relation col итого равно 18 и 10 были positive и 8 были negatives

Как мне этого добиться? Я знаю, что есть уборщик, и это то, что я пытался:

adorn_totals(df, where = "col", na.rm = TRUE,
  name = "Total") 

, но это показывает странный вывод ...

спасибо

1 Ответ

1 голос
/ 26 февраля 2020

Вы можете сгруппировать по sentiment_desc и затем суммировать все столбцы, вычислив сумму:

library(dplyr)
Sum <- df %>% group_by(sentiment_desc) %>% summarise_if(is.numeric, ~sum(.)) %>%
  mutate(sentiment_desc = paste(sentiment_desc,"Total"))

# A tibble: 2 x 8
  sentiment_desc relationship portfolio   vfm  ease Innovation Customer_Focus people
  <chr>                 <int>     <int> <int> <int>      <dbl>          <dbl>  <dbl>
1 negative Total            8         5     1     4          1              5      7
2 positive Total           10         4     1     2          6              7      8

И затем используйте bind_rows, чтобы получить две строки, добавляемые в конце вашего кадра данных:

library(dplyr)
DF <- df %>% bind_rows(Sum)

tail(DF)
# A tibble: 6 x 8
  sentiment_desc relationship portfolio   vfm  ease Innovation Customer_Focus people
  <chr>                 <int>     <int> <int> <int>      <dbl>          <dbl>  <dbl>
1 positive                  1         0     0     0          1              0      1
2 positive                  1         0     0     1          0              1      1
3 positive                  1         1     0     0          0              1      0
4 positive                  1         0     0     0          1              1      1
5 negative Total            8         5     1     4          1              5      7
6 positive Total           10         4     1     2          6              7      8

Выглядит ли то, что вы пытаетесь сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...