как рассчитать процент от вектора отсчетов

У меня есть data.frame, который выглядит так:

> dat <- data.frame(Operation = c("Login", "Posted", "Deleted"), `Total Count` = c(5, 25, 40), check.names = FALSE)
> dat
  Operation Total Count
1     Login           5
2    Posted          25
3   Deleted          40

Я хочу рассчитать процент для каждой операции, например, какой процент операций был Login. Я ожидал такого результата:

  Operation Total Count Percentage
1     Login           5 0.07142857
2    Posted          25 0.35714286
3   Deleted          40 0.57142857

Поскольку подсчеты уже суммированы, table() не работает:

> table(dat$`Total Count`)

 5 25 40 
 1  1  1 

person jaytika saharan    schedule 13.08.2013    source источник
comment
Я отредактировал этот вопрос, чтобы улучшить его - это полезный, хотя и базовый вопрос, который набирает много просмотров и занимает высокие позиции в результатах Google.   -  person Sam Firke    schedule 14.10.2016


Ответы (3)


Назовите свой столбец Total.Count вместо Total Count; пробелы в именах не работают.

Если у вас есть данные во фрейме данных, который называется, скажем, my.df:

my.df$Pct <- my.df$Total.Count / sum(my.df$Total.Count)
my.df
##   Operation Total.Count        Pct
## 1     Login           5 0.07142857
## 2    Posted          25 0.35714286
## 3   Deleted          40 0.57142857
person Peyton    schedule 13.08.2013

Вы можете использовать функцию prop.table() для вычисления процентов (при условии, что имя столбца TotalCount).

df$percent<- prop.table(df$TotalCount)

df
  Operation TotalCount    percent
1     Login          5 0.07142857
2    Posted         25 0.35714286
3   Deleted         40 0.57142857
person Didzis Elferts    schedule 13.08.2013

Если вы хотите использовать dplyr:

dat %>% 
  mutate(Percent = TotalCount / sum(TotalCount))

Обратите внимание, что я изменил имя столбца на TotalCount без пробелов.

person DAVL    schedule 13.01.2017