【发布时间】:2020-04-30 00:35:26
【问题描述】:
我有一些变量包含以下支持值 {a, b, c, ... k},我想为每个响应创建多个二进制变量。例如,var_a 将等效于 as.numeric(variable name very long== "a"),var_b 将等效于 as.numeric(variable name very long== "b") 等等。然而,在某些变量中,它们并没有从 a:k 整齐地走出来。有些人可能跳过了一两个字母。
当我有多个要更改的变量时,我知道如何使用 mutate_at,但是如果我只有一个变量要同时创建多个变量怎么办?
到目前为止,我一直在做的是:
df <- df %>% mutate(var_a = as.numeric(`variable name very long` == "a"),
var_b = as.numeric(`variable name very long` == "b"),
...)
当然,我要创建的变量不止两个。有没有更简单的方法来做到这一点?而且我还使用 mutate 作为缩短变量名的方法。我还尝试创建一个函数,该函数可能能够为我想要的任何变量和值执行此操作,因为我必须经常这样做,但我无法让它工作:
varname <- function(newvar, var, value){
df <- df %>% mutate(newvar = as.numeric(var == "value"))
}
varname("var_a", "`variable name very long`", "a")
非常感谢任何建议。谢谢!
【问题讨论】: