将数据框列转换为因子
convert data frame column to factor
我只想将数据框的两列转换为因子。
我使用 apply 函数,但结果是字符,而不是因子。
知道我做错了什么吗?
aa <- c(1,2,3,4)
bb <- c(6,7,8,9)
xx <- data.frame(aa, bb)
xx
yy <- apply(xx, 2, function(xx) as.factor(xx))
# aa bb
# [1,] "1" "6"
# [2,] "2" "7"
# [3,] "3" "8"
# [4,] "4" "9"
当我对独立向量实施相同的操作时,它起作用了:
nn <- c(1,2,3,4)
mm <- as.factor(nn)
mm
apply
通常不适合data.frames,因为它returns是一个矩阵。您可以使用 lapply
代替:
yy <- data.frame(lapply(xx, as.factor))
str(yy)
#'data.frame': 4 obs. of 2 variables:
# $ aa: Factor w/ 4 levels "1","2","3","4": 1 2 3 4
# $ bb: Factor w/ 4 levels "6","7","8","9": 1 2 3 4
我假设你意识到你也可以这样做
xx <- data.frame(aa = as.factor(aa), bb = as.factor(bb))
我会做这样的事情:
library(dplyr)
yy = xx %>% mutate_each(funs(as.factor))
这将 as.factor
应用于 xx
中的每一列。
或者你可以
library(data.table)
setDT(xx)[, lapply(.SD, as.factor)]
我只想将数据框的两列转换为因子。 我使用 apply 函数,但结果是字符,而不是因子。 知道我做错了什么吗?
aa <- c(1,2,3,4)
bb <- c(6,7,8,9)
xx <- data.frame(aa, bb)
xx
yy <- apply(xx, 2, function(xx) as.factor(xx))
# aa bb
# [1,] "1" "6"
# [2,] "2" "7"
# [3,] "3" "8"
# [4,] "4" "9"
当我对独立向量实施相同的操作时,它起作用了:
nn <- c(1,2,3,4)
mm <- as.factor(nn)
mm
apply
通常不适合data.frames,因为它returns是一个矩阵。您可以使用 lapply
代替:
yy <- data.frame(lapply(xx, as.factor))
str(yy)
#'data.frame': 4 obs. of 2 variables:
# $ aa: Factor w/ 4 levels "1","2","3","4": 1 2 3 4
# $ bb: Factor w/ 4 levels "6","7","8","9": 1 2 3 4
我假设你意识到你也可以这样做
xx <- data.frame(aa = as.factor(aa), bb = as.factor(bb))
我会做这样的事情:
library(dplyr)
yy = xx %>% mutate_each(funs(as.factor))
这将 as.factor
应用于 xx
中的每一列。
或者你可以
library(data.table)
setDT(xx)[, lapply(.SD, as.factor)]