我正在处理我想作为因素对待的预测因子。不幸的是,代表多项选择题的答案的数据存储为整数,因此当我拟合线性模型时,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
的东西?尝试不同的事情......
答案 0 :(得分:2)
在将数据框传递给lm
之前,将多项选择题(MCQ)的所有答案转换为因子可能是最简单的。假设所有整数变量都是MSQ答案,您可以使用is.integer
和sapply
:
## 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
,不包括那些变量。