例如,如果访问者是..
,则可以使用:
iris %>%
select_if(is.numeric) %>%
# `..` here refers to the object generated thus far.
# `.` refers to the column being acted on.
mutate_all(funs(./sum(..)))
答案 0 :(得分:0)
如果您想获取列数,可以
iris %>%
select_if(is.numeric) %>%
mutate_all(funs(./sum(.)))
如果您想要总金额,可以将其存储为另一列
iris %>% select_if(is.numeric) %>%
mutate(totsum = sum(.)) %>%
mutate_at(vars(-totsum), funs(./totsum))
我不认为将dplyr用于此类非列或行分组操作有很多优点。
答案 1 :(得分:0)
我们可以使用data.table
library(data.table)
as.data.table(iris)[, lapply(.SD, function(x) if(is.numeric(x)) x/sum(x)) else NULL)]