Преобразование векторов символов в фактор с уровнями - PullRequest
1 голос
/ 18 мая 2019

Один из вопросов в моем фрейме данных спрашивает людей, почему они используют сервис.Они отметили причины, по которым это применимо, и я загрузил данные в R. Он прочитал серию ответов, которые каждый человек дал в виде строки символов.Я хотел бы преобразовать их в фактор с уровнями.Переменная называется «Why_use_EPNET», и уровни, которые я ищу в моем факторе, будут «Обсуждать темы, представляющие интерес», «Сбор ресурсов», «Наблюдать за тем, как другие обсуждают темы, представляющие интерес» и т. Д.

Why_use_EPNET
"Discussing topics of interest, Watching others discuss topics of interest"
"Discussing topics of interest, Resource gathering"
"Resource gathering"
"Resource gathering"
"Watching others discuss topics of interest"

R в настоящее время читает ответы каждого участника как символьный вектор.В идеале я хотел бы преобразовать переменную в множитель с разными уровнями, чтобы R распознал ее как что-то вроде:

Why_use_EPNET
1,3
1,2
2
2
3

Если это невозможно, я разбью отдельные причины на двоичныевыбор для каждого участника, а затем проанализировать:

Use_EPNET_for_Resource_gathering
Yes
Yes
Yes
No

Use_EPNET_for_Watching_others_discuss
No
Yes
No
Yes

Любые мысли приветствуются

1 Ответ

0 голосов
/ 18 мая 2019

Предполагая, что ваша текущая структура данных выглядит примерно так

k <- c(
  "Discussing topics of interest, Watching others discuss topics of interest",
  "Discussing topics of interest, Resource gathering",
  "Resource gathering",
  "Resource gathering",
  "Watching others discuss topics of interest")

Why_use_EPNET <- strsplit(k, ", *")

Мы можем преобразовать ответы в категориальные с помощью factor() и указав вектор уровней.

lv <- c("Discussing topics of interest", 
        "Resource gathering",
        "Watching others discuss topics of interest")

Why_use_EPNET.o <- lapply(Why_use_EPNET, factor, levels=lv)
str(Why_use_EPNET.o)
# List of 5
#  $ : Factor w/ 3 levels "Discussing topics of interest",..: 1 3
#  $ : Factor w/ 3 levels "Discussing topics of interest",..: 1 2
#  $ : Factor w/ 3 levels "Discussing topics of interest",..: 2
#  $ : Factor w/ 3 levels "Discussing topics of interest",..: 2
#  $ : Factor w/ 3 levels "Discussing topics of interest",..: 3

Затем вы можете получить числовые значения, используя as.numeric()

lapply(Why_use_EPNET.o, as.numeric)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...