这给我带来了麻烦,我正在使用dplyr,并且我想根据CP的值更改每个Week(W1到W3)的值:如果 所需的输出应为以下内容: 您对如何使用dplyr或其他方法解决此问题有任何想法吗?
谢谢! CP W1 W2 W3 W4
<dbl> <dbl> <dbl> <dbl> <dbl>
1 50 0 60 0 0
4 10 0 0 0 0
5 50 20 20 21 50
6 10 5 0 0 21
8 10 0 31 0 0
CP W1 W2 W3 W4
<dbl> <dbl> <dbl> <dbl> <dbl>
1 50 0 60 0 0
4 10 0 0 0 0
5 50 0 0 0 50
6 10 0 0 0 21
8 10 0 31 0 0
答案 0 :(得分:4)
您可以申请mutate_at
:
library(dplyr)
df %>%
mutate_at(vars(starts_with("W")), funs(ifelse(. < CP, 0, .)))
输出:
CP W1 W2 W3 W4
1 50 0 60 0 0
2 10 0 0 0 0
3 50 0 0 0 50
4 10 0 0 0 21
5 10 0 31 0 0
请注意,starts_with
将匹配任何以W
开头的列名。
如果这是一个问题(例如,如果您有其他不想使用该模式的列),则也可以将matches
与一个仅考虑那些{{1}的正则表达式一起使用},后跟数字:
W