Colsum новый датафрейм - PullRequest
       0

Colsum новый датафрейм

2 голосов
/ 04 февраля 2020

С помощью этой команды можно получить фрейм данных с суммой каждого столбца

df <- data.frame(id = c(1,2,3), stock = c(3,1,4), bill = c(1,0,1), bear = c(3,2,5))

dfsum <- data.frame(colSums(df[-1]))

Однако этот фрейм данных имеет только один столбец.

Как можно создать фрейм данных с двумя столбцами один с именами col и второй с частотами?

Ответы [ 3 ]

3 голосов
/ 04 февраля 2020

Вы можете сделать:

stack(colSums(df[-1]))

  values   ind
1      8 stock
2      2  bill
3     10  bear

Или используя tibble:

enframe(colSums(df[-1]))

  name  value
  <chr> <dbl>
1 stock     8
2 bill      2
3 bear     10
2 голосов
/ 04 февраля 2020

Мы можем использовать tidyverse подходы с summarise_at и pivot_longer

library(dplyr)
library(tidyr)
df %>%
   summarise_at(vars(-id), sum) %>% 
   pivot_longer(everything())
#   name value
#1 stock     8
#2  bill     2
#3  bear    10
0 голосов
/ 04 февраля 2020

Вы можете просто попробовать apply.

apply(df[-1], 2, sum)

Результат

stock  bill  bear 
    8     2    10 

Для data.frame

(df2 <- data.frame( freq = apply(df[-1], 2, sum)))
 df2$var <- rownames(df2)

Результат

var   freq
stock    8
bill     2
bear    10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...