我正在处理包含16个问题的数据集,其中响应集是相同的(是,否,未知或丢失)。我正在使用R处理数据,并且我想将每个变量转换为一个因子。对于一个变量,我可以用下面的结构:将相同的因子水平应用于R数据框中的多个变量
df <- read.csv("thedata.csv")
df$q1 <- factor(x=df$q1,levels=c(-9,0,1),
labels=c("Unknown or Missing","No","Yes))
我想避免打字是16倍。我可以用for()
这样做,但我想知道是否有更清晰,更R的方法来做到这一点。一些示例数据:
structure(list(q1 = c(0, 0, 0, -9, 0), q2 = c(0, 0, 1, 0, 0),
q3 = c(0, 0, 1, 0, 0), q4 = c(1, 1, 0, 0, 0),
q5 = c(0, 1, 1, 1, 1), q6 = c(1, 1, 1, 0, 0),
q7 = c(0, 0, 0, 1, 0), q8 = c(0, 0, 1, 1, 1),
q9 = c(1, 0, -9, 1, 0), q10 = c(1, 0, 0, 0, 0),
q11 = c(0, 1, 1, 0, 0), q12 = c(1, 1, 0, 0, 0),
q13 = c(1, -9, 1, 0, 0), q14 = c(0, 0, 0, 1, 1),
q15 = c(1, 0, 1, 1, 0), q16 = c(1, 1, 1, 1, 1)),
.Names = c("q1", "q2", "q3", "q4", "q5", "q6", "q7",
"q8", "q9", "q10", "q11", "q12", "q13",
"q14", "q15", "q16"),
row.names = c(NA, -5L), class = "data.frame")
注意:申请总是把它的输入转换成矩阵 – hadley 2013-03-19 01:57:11