如何在同一块中使用dplyr动词rename和mutate

wwwo4jvm  于 2023-06-03  发布在  其他
关注(0)|答案(1)|浏览(176)

我想首先将我的x变量重命名为newX,然后根据newXy的值改变新的列名z。将rename和mutate放在同一块中会导致错误。有没有办法使用选项1而不出错?

set.seed(1)
dat <- data.frame(
  x = sample(c(0,1), size = 5, replace = TRUE),
  y = sample(c(0,1), size = 5, replace = TRUE)
)
 # option 1
dat %>%
  rename(newX = x) %>%
  mutate(z = rowSums(dat[c("newX", "y")] == 1))

 # option 2
dat <- dat %>%
  rename(newX = x)
dat %>% 
  mutate(z = rowSums(dat[c("newX", "y")] == 1))
3qpi33ja

3qpi33ja1#

使用dplyr::pick(),它允许您从当前 Dataframe 环境中“挑选”变量,而不是dat[c("vars")],它在任何转换之前引用dat对象。

library(dplyr)

dat %>%
  rename(newX = x) %>%
  mutate(z = rowSums(pick(newX, y) == 1))
newX y z
1    0 0 0
2    1 0 1
3    0 0 0
4    0 1 1
5    1 1 2

相关问题