R:仅使用选定的列数将频率转换为百分比

时间:2017-05-03 13:35:59

标签: r dplyr

我想将填充频率的数据帧转换为使用dplyr逐行填充的数据帧。

我的数据集具有填充其他变量的特殊性,我只想计算由名称向量定义的一组列的百分比。另外,我想使用dplyr库。

sim_dat <- function() abs(floor(rnorm(26)*10))
df <- data.frame(a = letters, b = sim_dat(), c = sim_dat(), d = sim_dat()
                 , z = LETTERS)
names_to_transform <- names(df)[2:4]

df2 <- df %>%
  mutate(sum_freq_codpos = rowSums(.[names_to_transform])) %>%
  mutate_each(function(x) x / sum_freq_codpos, names_to_transform)
# does not work

有关如何做的任何想法?我尝试过使用mutate_at和mutate_each,但我无法让它工作。

1 个答案:

答案 0 :(得分:4)

你快到了!:

df2 <- df %>%
  mutate(sum_freq_codpos = rowSums(.[names_to_transform])) %>%
  mutate_at(names_to_transform, funs(./sum_freq_codpos))

.大致转换为“我在这里操纵的对象”,在此调用中,它是“names_to_transform中的焦点变量”。