将列子集的值变为百分比格式

时间:2017-07-12 02:35:00

标签: r dplyr mutate

我已根据下面的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 个答案:

答案 0 :(得分: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))