在R中一次编辑多个列的级别

时间:2015-10-06 01:49:21

标签: r dataframe levels

我正在尝试将几个因子列的级别设置为以下值“否”和“是”。 我使用以下代码,但它不起作用

binaryCol <- c(5:10, 15:19, 21:26, 30:32) # position of the columns for which I want to change the factors
for( i in binaryCol) {levels(df[,i])<- c("No","Yes")}

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

您的代码可以通过一个简单的示例正常运行:

binaryCol <- c(1,3)
df <- data.frame(Var1=factor(1:0), Var2=1:2, Var3=factor(0:1))
#  Var1 Var2 Var3
#1    1    1    0
#2    0    2    1

for(i in binaryCol) { levels(df[,i]) <- c("No","Yes") }
df
#  Var1 Var2 Var3
#1  Yes    1   No
#2   No    2  Yes

或者,使用lapply将函数应用于所选的factor列:

df[binaryCol] <- lapply(df[binaryCol], function(x) {levels(x) <- c("No","Yes"); x })

df
#  Var1 Var2 Var3
#1  Yes    1   No
#2   No    2  Yes

或者如果你想变得棘手:

df[binaryCol] <- lapply(df[binaryCol], `levels<-`, c("No","Yes") )
相关问题