R, dplyr: как разделить элементы фрейма даты по отдельным элементам - PullRequest
0 голосов
/ 20 февраля 2019

edit: Решение в конце.

У меня есть кадр данных, который содержит разные переменные и сумму этих разных переменных как переменную, называемую "total".Я хочу добавить новый столбец, который вычисляет долю каждой переменной в «общей» переменной.Пример:

library(dplyr)

name <- c('A','A', 
          'B','B')
month = c("oct 2018", "nov 2018", 
         "oct 2018",  "nov 2018")

value <- seq(1:length(month))

df = data.frame(name, month, value)

# Create total variable
dfTotal  =
      df%>%
      group_by_("month")%>%
      summarize(value = sum(value, na.rm = TRUE))
dfTotal[["name"]] <-  "Total"
dfTotal = as.data.frame(dfTotal) 

# Add total column to dataframe
df2 = rbind(df, dfTotal)
df2

, который дает фрейм данных

   name    month value
1     A oct 2018     1
2     A nov 2018     2
3     B oct 2018     3
4     B nov 2018     4
5 Total nov 2018     6
6 Total oct 2018     4

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

   name    month value  share
1     A oct 2018     1  0.25 (=1/4)
2     A nov 2018     2  0.33 (=2/6)
3     B oct 2018     3  0.75 (=3/4)
4     B nov 2018     4  0.67 (=4/6)
5 Total nov 2018     6  1.00 (=6/6)
6 Total oct 2018     4  1.00 (=4/4)

Кто-нибудь знает, как я из первого кадра данных могу создать последний столбец во втором кадре данных?

Решение: Основываясь на комментарии tmfmnk,Следующее решает проблему:

df2 = 
  df2 %>% 
  group_by(month) %>% 
  mutate(share = value/max(value))
df2

, который дает название месяца, значение доли

  <fct> <fct>    <int> <dbl>
1 A     oct 2018     1 0.25 
2 A     nov 2018     2 0.333
3 B     oct 2018     3 0.75 
4 B     nov 2018     4 0.667
5 Total nov 2018     6 1    
6 Total oct 2018     4 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...