我想知道R中是否有一种以DRY方式分解和重新调整许多变量的方法。因此,可以说我有15个虚拟变量,所有变量都用0和1编码。默认情况下,R使0成为参考类别,我该如何使用factor和relevel函数将所有15个变量的参考级别更改为1。 ?就像是:
varList <- list("V1", "V2", "V3", "V4", "V5", "V6", "V7",
"V8", "V9", "V10", "V11", "V12", "V13", "V14", "V15")
for (i in varList) {
df$i <- factor(df$i)
df$i <- relevel(df$i, ref = "1")
}
Run Code Online (Sandbox Code Playgroud)
您可以使用[[以下方式访问变量:
for (i in varList) {
df[[i]] <- relevel(factor(df[[i]]), ref = "1")
}
Run Code Online (Sandbox Code Playgroud)
将相同的转换应用于数据帧的许多列的另一种方法是使用dplyr的mutate_each函数:
library(dplyr)
var_vector <- c("V1", "V2", "V3", "V4", "V5", "V6", "V7",
"V8", "V9", "V10", "V11", "V12", "V13", "V14", "V15")
relev <- function(f) relevel(factor(f), ref = "1")
df <- mutate_each(df, funs(relev), one_of(var_vector))
Run Code Online (Sandbox Code Playgroud)
如果您要转换的所有列都遵循特定的模式,则可以简单地执行以下操作:
# transform columns that start with V
df <- mutate_each(df, funs(relev), starts_with("V"))
# transform columns that have V then a number
df <- mutate_each(df, funs(relev), matches("^V\\d+"))
Run Code Online (Sandbox Code Playgroud)