使用dplyr
,有没有办法在不使用的情况下按行选择性地改变列rowwise()
?
例如,给定下面的输入,我想在前缀为“pre_”的列中用零替换负数:
df <- data.frame(a=c(-5, 3, 4, 5), b=4:1, pre_c=c(-1, -5, 3, 10), pre_d=c(-6, 5, -12, 0))
# a b pre_c pre_d
# 1 -5 4 -1 -6
# 2 3 3 -5 5
# 3 4 2 3 -12
# 4 5 1 10 0
我想要的输出是:
# a b pre_c pre_d
# 1 -5 4 0 0
# 2 3 3 0 5
# 3 4 2 3 0
# 4 5 1 10 0
这可以通过 and 来rowwise()
实现mutate_at()
:
df %>%
rowwise() %>%
mutate_at(vars(starts_with("pre_")), funs(max(0, .)))
还有另一种方法可以做到这一点吗?