我有一个这样的int列:
idNums
2
101
34
25
8
...
我需要将它们转换为 3 个因子列,如下所示:
digit1 digit2 digit3
0 0 2
1 0 1
0 3 4
0 2 5
0 0 8
... ... ...
有什么建议么?
最佳答案
这是一个使用模块化算术运算符 %%
和 %/%
的有趣解决方案:
d <- c(2, 101, 34, 25, 8)
res <- data.frame(digit1 = d %/% 100,
digit2 = d %% 100 %/% 10,
digit3 = d %% 10)
# digit1 digit2 digit3
# 1 0 0 2
# 2 1 0 1
# 3 0 3 4
# 4 0 2 5
# 5 0 0 8
请注意,它为每个列返回数字值具有次要的-但很好的副作用。但是,如果您想要 因子 列,只需执行以下命令:
res[] <- lapply(res, as.factor)
all(sapply(res, class)=="factor")
#[1] TRUE
关于R基于数字将整数列转换为3因子列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8792328/