我想将填充频率的数据帧转换为使用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,但我无法让它工作。
答案 0 :(得分:4)
你快到了!:
df2 <- df %>%
mutate(sum_freq_codpos = rowSums(.[names_to_transform])) %>%
mutate_at(names_to_transform, funs(./sum_freq_codpos))
点.
大致转换为“我在这里操纵的对象”,在此调用中,它是“names_to_transform中的焦点变量”。