gpt4 book ai didi

r - 将 mutate_at() 与否定选择助手一起使用,例如(不是 one_of())

转载 作者:行者123 更新时间:2023-12-01 19:12:18 25 4
gpt4 key购买 nike

我的数据如下所示:

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 , X2ref但想以这样的方式对数据进行子集化,以仅改变那些不是 X1 的列, X2ref 。这些其他列的数量和名称是可变的,但始终是数字。我想我可以做这样的事情:

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怎么做select helper ?

最佳答案

one_of 需要 - 而不是 !

df %>%
mutate_at(vars(-one_of(c("X1", "X2", "ref"))), funs(new = . - ref))
# A tibble: 24 x 9
# X1 X2 ref sampl1 var2 meas3 sampl1_new var2_new meas3_new
# <chr> <int> <int> <int> <int> <int> <int> <int> <int>
# 1 A 1 15 33 14 36 18 -1 21
# 2 B 2 39 35 43 1 -4 4 -38
# 3 C 1 20 27 3 23 7 -17 3
# 4 D 2 42 28 21 11 -14 -21 -31
# 5 A 1 44 14 37 18 -30 -7 -26
# 6 B 2 3 7 6 28 4 3 25
# 7 C 1 24 43 25 16 19 1 -8
# 8 D 2 49 39 9 5 -10 -40 -44
# 9 A 1 46 30 45 47 -16 -1 1
#10 B 2 19 50 31 45 31 12 26

关于r - 将 mutate_at() 与否定选择助手一起使用,例如(不是 one_of()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45875697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com