3 回答

TA貢獻2011條經驗 獲得超2個贊
選擇一些列以強制考慮因素:
cols <- c("A", "C", "D", "H")
使用lapply()強迫和更換所選列:
data[cols] <- lapply(data[cols], factor) ## as.factor() could also be used
檢查結果:
sapply(data, class)
# A B C D E F G
# "factor" "integer" "factor" "factor" "integer" "integer" "integer"
# H I J
# "factor" "integer" "integer"

TA貢獻1799條經驗 獲得超8個贊
最近的tidyverse方法是使用mutate_at函數:
library(tidyverse)
library(magrittr)
set.seed(88)
data <- data.frame(matrix(sample(1:40), 4, 10, dimnames = list(1:4, LETTERS[1:10])))
cols <- c("A", "C", "D", "H")
data %<>% mutate_at(cols, funs(factor(.)))
str(data)
$ A: Factor w/ 4 levels "5","17","18",..: 2 1 4 3
$ B: int 36 35 2 26
$ C: Factor w/ 4 levels "22","31","32",..: 1 2 4 3
$ D: Factor w/ 4 levels "1","9","16","39": 3 4 1 2
$ E: int 3 14 30 38
$ F: int 27 15 28 37
$ G: int 19 11 6 21
$ H: Factor w/ 4 levels "7","12","20",..: 1 3 4 2
$ I: int 23 24 13 8
$ J: int 10 25 4 33
- 3 回答
- 0 關注
- 1006 瀏覽
添加回答
舉報