簡體   English   中英

將特定列更改為 R 中的因子

[英]Change specific columns as factor in R

我有一個文件名"Second" ,它有數據"q1","q2",...."q40""q40_n1", "q40_n2","q40_n3", ..."q40_n20"

其中一些是"character"向量,一些是"integer"

我的問題是如何一次將 integer 向量更改為"factor"

  1. q30:q35 到“因子”-------- (q(30+n))
  2. q40_n1:q40_n4 到“因子” ---------(q40_n#)
  3. q18:q23 到“因素”

使用dplyr package:

mutate_at(Second, vars(q30:q35, q40_n1:q40_n4, q18:q23), factor)

您可以使用colClasses=參數控制讀取時的所有列:

str(read.csv(text="a,b\na,1"))
# 'data.frame': 1 obs. of  2 variables:
#  $ a: Factor w/ 1 level "a": 1
#  $ b: int 1

str(read.csv(text="a,b\na,1", colClasses="factor"))
# 'data.frame': 1 obs. of  2 variables:
#  $ a: Factor w/ 1 level "a": 1
#  $ b: Factor w/ 1 level "1": 1

str(read.csv(text="a,b\na,1", colClasses="character"))
# 'data.frame': 1 obs. of  2 variables:
#  $ a: chr "a"
#  $ b: chr "1"

或者您可以factor將其分解:

dat <- read.csv(text="a,b\na,11")
str(dat)
# 'data.frame': 1 obs. of  2 variables:
#  $ a: Factor w/ 1 level "a": 1
#  $ b: int 11
dat$b <- factor(dat$b)
str(dat)
# 'data.frame': 1 obs. of  2 variables:
#  $ a: Factor w/ 1 level "a": 1
#  $ b: Factor w/ 1 level "11": 1

### or all columns, without regard to original class
dat <- read.csv(text="a,b\na,11")
dat[] <- lapply(dat, factor)
str(dat)
# 'data.frame': 1 obs. of  2 variables:
#  $ a: Factor w/ 1 level "a": 1
#  $ b: Factor w/ 1 level "11": 1

一個數字或 integer 向量,如:

x <- c(1, 2, 3)
> str(x)
 num [1:3] 1 2 3

可以轉換為因子向量:

x <- as.factor(x)
> x
[1] 1 2 3
Levels: 1 2 3
> str(x)
 Factor w/ 3 levels "1","2","3": 1 2 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM