Изменение значений подмножества столбцов в процентном формате

Я сгенерировал эту сводную таблицу на основе df ниже.

set.seed(1)
df <- data.frame(rep(
 sample(c(2012,2016),10, replace = T)),
 sample(c('Treat','Control'),10,replace = T),
 runif(10,0,1),
 runif(10,0,1),
 runif(10,0,1))

colnames(df) <- c('Year','Group','V1','V2','V3')

summary.table = df %>% 
group_by(Year, Group) %>%
group_by(N = n(), add = TRUE) %>% 
summarise_all(funs(sd,median)) %>%
ungroup %>%
mutate(Year = ifelse(duplicated(Year),"",Year))

Есть ли способ, которым я мог бы отобразить значения, связанные с median колонки в процентах?

Я не умела пользоваться mutate() а также scales::percent() только для подмножества столбцов (я не хочу делать это по отдельности, поскольку в исходном наборе данных будет больше столбцов, что делает эту процедуру недостаточно практичной.

Что я должен был сделать вместо этого, если я хотел изменить в соответствии с подмножеством строк?

Спасибо


РЕДАКТИРОВАТЬ:

А если бы это было так?

summary.table = df %>% 
group_by(Year, Group) %>%
summarise_all(funs(median,sd)) %>% 
gather(key, value, -Year, -Group) %>%
separate(key, into=c("var", "stat")) %>%
unite(stat_Group, stat, Group) %>%
spread(stat_Group, value) %>%
ungroup %>%
mutate(Year = ifelse(duplicated(Year),"",Year))

1 ответ

Нам нужно использовать percent завернутый в median

summary.table <- df %>% 
                  group_by(Year, Group) %>%
                  group_by(N = n(), add = TRUE) %>% 
                  summarise_all(funs(sd=sd(.),median=scales::percent(median(.)))) %>%
                  ungroup %>%
                  mutate(Year = ifelse(duplicated(Year),"",Year))
Другие вопросы по тегам