我有如下数据:
library(dplyr)
set.seed(123)
df <- data_frame(X1 = rep(LETTERS[1:4], 6),
X2 = rep(1:2, 12),
ref = sample(1:50, 24),
sampl1 = sample(1:50, 24),
var2 = sample(1:50, 24),
meas3 = sample(1:50, 24))
具有
dplyr
我可以一次编辑和创建多个列,例如:
df %>% mutate_if(is.numeric, funs(new = . - ref))
select
这样的助手:
df %>% mutate_at(vars(one_of(c("X2", "ref"))), funs(new = . - ref))
然而,在我的情况下,我知道我的数据将始终包含列
X1
,
X2
ref
但希望以这样的方式对数据进行子集处理,以仅变异不属于
X1
X2
裁判
. 这些其他列的数字和名称是可变的,但始终是数字。我想我可以这样做:
df %>% mutate_at(vars(!one_of(c("X1", "X2", "ref"))), funs(new = . - ref))
或者也许
df %>% mutate_at(vars(one_of(!names %in% c("X1", "X2", "ref"))), funs(new = . - ref))
但两者都不起作用。你怎么做负dplyr