Измените указанные c столбцы как коэффициент в R - PullRequest
1 голос
/ 27 мая 2020

У меня есть имя файла "Second" и данные "q1","q2",...."q40" и "q40_n1", "q40_n2","q40_n3", ..."q40_n20"

Некоторые из них - "character" векторы, а некоторые - "integer"

Мои вопрос в том, как я могу сразу изменить целочисленный вектор на "factor"?

  1. q30: q35 на «коэффициент» ------- (q (30 + n))
  2. q40_n1: q40_n4 в «фактор» --------- (q40_n #)
  3. q18: q23 в «фактор»

Ответы [ 3 ]

1 голос
/ 27 мая 2020

Вы можете управлять всеми столбцами при чтении, используя аргумент 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
1 голос
/ 27 мая 2020

Числовой c или целочисленный вектор, например:

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
1 голос
/ 27 мая 2020

С dplyr пакет:

mutate_at(Second, vars(q30:q35, q40_n1:q40_n4, q18:q23), factor)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...