亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一次將多列強制轉換為因子

一次將多列強制轉換為因子

長風秋雁 2019-11-13 15:36:47
我有一個示例數據框,如下所示:data <- data.frame(matrix(sample(1:40), 4, 10, dimnames = list(1:4, LETTERS[1:10])))我想知道如何選擇多個列并將它們一起轉換為因子。我通常會這樣做data$A = as.factor(data$A)。但是,當數據幀很大且包含許多列時,這種方式將非常耗時。有誰知道更好的方法嗎?
查看完整描述

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" 


查看完整回答
反對 回復 2019-11-13
?
守著星空守著你

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


查看完整回答
反對 回復 2019-11-13
  • 3 回答
  • 0 關注
  • 1006 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號