【发布时间】:2023-03-29 13:05:02
【问题描述】:
我有一些变量,我想以相同的方式进行转换。
library(dplyr)
glimpse(samp)
Observations: 5
Variables: 4
$ Q26_1_1 <dbl+lbl> 1, 3, NA, 2, 4
$ Q26_2_1 <dbl+lbl> 1, 3, NA, 2, 4
$ Q26_3_1 <dbl+lbl> 1, 3, NA, 2, 4
$ Q26_4_1 <dbl+lbl> 1, 3, NA, 2, 4
所有变量的范围是1到5。如果一个条目是1我想把它转换成1 else to 0。
通常我使用ifelse 喜欢:
samp %>%
mutate(Q26_1_1_t1 = ifelse(Q26_1_1 == 1, 1, 0),
Q26_2_1_t1 = ifelse(Q26_2_1 == 1, 1, 0),
Q26_3_1_t1 = if_else(Q26_3_1 == 1, 1, 0),
Q26_4_1_t1 = ifelse(Q26_4_1 == 1, 1, 0))
但是,如果有 40 或 60 个变量,则非常耗时。有没有像mutate_at 这样的方法来制作更短的代码?
Here 就是一个例子。我是这样改编的:
f = function(x) {
ifelse(x == 1, 1, 0)
}
samp %>%
mutate_at(vars(contains("Q26")), funs(f))
...但不包括重命名(例如 Q26_4_1 到 Q26_4_1_t1)。
添加后缀并更改多个变量的值
【问题讨论】:
-
你能让这篇文章可重现并显示相同的预期输出吗?