如何自动将整数变量编码为因子?

时间:2014-07-18 16:36:34

标签: r regression lm categorical-data r-factor

我正在处理我想作为因素对待的预测因子。不幸的是,代表多项选择题的答案的数据存储为整数,因此当我拟合线性模型时,R将这些视为数字预测因子而不是因子。我不想每次都输入factor(x);我如何自动将预测变量编码为因子变量?

我可能拥有的数据示例:

  a b response
1 1 T 6.946486
2 2 F 1.952378
3 3 T 5.189918
4 1 T 2.680438
5 2 F 2.243461
6 3 T 5.398814
7 1 T 2.375182
8 2 F 0.376323
9 3 T 5.144803

所需任务:告诉R而不必输入lm(response ~ factor(a) + b)预测变量a应被视为因子变量。也许我需要遍历每一列并保存为一个因子,然后传递给lm?也许我可以传递给lm的东西?尝试不同的事情......

1 个答案:

答案 0 :(得分:2)

在将数据框传递给lm之前,将多项选择题(MCQ)的所有答案转换为因子可能是最简单的。假设所有整数变量都是MSQ答案,您可以使用is.integersapply

## making up data
N <- 20
d <- data.frame(a = sample(3, N, replace=TRUE),
                b = sample(3, N, replace=TRUE),
                c = sample(3, N, replace=TRUE),
                d = sample(c(TRUE, FALSE), 10, replace=TRUE),
                e = sample(c(TRUE, FALSE), 10, replace=TRUE),
                f = sample(3, N, replace=TRUE),
                response = rnorm(20, 0, 2))

## determine which columns are integer
int_col <- which(sapply(d, is.integer))

## convert all integer variables to factor variables
d[, int_col] <- lapply(d[int_col], factor) # sapply doesn't work here
str(d)

如果你有不是MSQ答案的整数变量,那么你必须手动修改int_col,不包括那些变量。