as.factor不将整数转换为因子
我现在正在自学。我正试图用下面的方法将整数变量转换成分类变量as.factor不将整数转换为因子,r,apply,R,Apply,我现在正在自学。我正试图用下面的方法将整数变量转换成分类变量 train[, c("Store", "DayOfWeek")] <- apply(train[,c("Store", "DayOfWeek")], 2, as.factor) 当我单独对变量执行此操作(而不是使用apply)时,它会起作用。谢谢应用是错误的工具。“应用”方法是使用lappy,因为数据帧是列表,其中每列都是列表的一个元素: mtcars[,c('cyl','vs')] <- lapply(mtcars[,
train[, c("Store", "DayOfWeek")] <- apply(train[,c("Store", "DayOfWeek")], 2, as.factor)
当我单独对变量执行此操作(而不是使用apply)时,它会起作用。谢谢
应用
是错误的工具。“应用”方法是使用lappy
,因为数据帧是列表,其中每列都是列表的一个元素:
mtcars[,c('cyl','vs')] <- lapply(mtcars[,c('cyl','vs')],as.factor)
> str(mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : Factor w/ 2 levels "0","1": 1 1 2 2 1 2 1 2 2 2 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
mtcars[,c('cyl','vs')]str(mtcars)
“data.frame”:32 obs。在11个变量中:
$mpg:num2122.821.418.718.1144.324.422.819.2。。。
$cyl:系数w/3级别“4”、“6”、“8”:2 2 3 1 2。。。
$disp:num 160 108 258 360。。。
$hp:num 110 93 110 175 105 245 62 95 123。。。
$drat:num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92。。。
$wt:num 2.62 2.88 2.32 3.21 3.44。。。
$qsec:num 16.51718.619.417。。。
$vs:系数w/2级“0”,“1”:1 2 1 2。。。
$am:num 11 0 0 0 0 0 0。。。
$gear:num 4 4 3 3 3 4 4 4 4。。。
$carb:num 4 1 2 1 4 2 4。。。
通常,在数据帧上使用
apply
时要谨慎。apply
文档的第一行清楚地表明,它所做的第一件事是将其参数强制为矩阵,而矩阵只能保存一种类型的数据。因此,您的数据帧将立即转换为所有数字、所有整数、所有字符,具体取决于其中的内容。如上所述,Lappy是正确的工具。您可以将dplyr和mutate_分别用于此任务和许多类似的列转换,如下所示:
library(dplyr)
train <- train %>% mutate_each(funs(as.factor), c(Store, DayOfWeek))
库(dplyr)
每个序列的变异百分比(funs(因子),c(商店,星期日))
train$Store@MichaelChirico时会发生什么,当我单独做时,它会起作用。对我来说,即使单独做也不起作用。
library(dplyr)
train <- train %>% mutate_each(funs(as.factor), c(Store, DayOfWeek))