Р: Множество условий для классификации двух вопросов (факторов) опроса в один фактор с уровнями Нет / Легко / Серьезно - PullRequest
0 голосов
/ 07 мая 2018

У меня есть два фактора X и Y с 5 уровнями (5-балльная шкала Лайкерта)

"[1] Never"      "[2] Rarely"     "[3] Sometimes"  "[4] Often"      "[5] Very Often"

В зависимости от обоих ответов я хочу создать новый фактор Z со следующей кодировкой:

Нет: X = Никогда И Y = Никогда

Легкий: X = Редко, Иногда, Часто или Очень Часто И Y = Никогда

Тяжелый: Y = Редко, Иногда, Часто или Очень Часто

Я пробовал много разных условий, но ни одно не помогло.

Вот один из них:

Z <- c("None", "Mild", "Severe")
    factor(Z)
    levels(Z) <- c("None", "Mild", "Severe")
    if (!is.na((X == 1) && (Y == 1))) {
      Z == "None"
      } else if (!is.na((X != 1) && (Y == 1))) {
        Z == "Mild"
        } else (!is.na((X != 1) && (Y != 1))) {
          Z == "Severe"
          }

Сообщение об ошибке:

Error: unexpected '{' in:
"    Z== "Mild"
    } else (!is.na((X != 1) && (Y != 1))) {"
>       Z == "Severe"
[1] FALSE FALSE  TRUE
>       }
Error: unexpected '}' in "      }"
> 

Выборка состоит из около 4000 человек, и я хочу знать, какой участник в какой категории (например, депрессия), в соответствии с его или ее оценками на вопросы X и Y.

Я все еще начинающий R, поэтому я благодарен за вашу помощь!

Всего наилучшего

1 Ответ

0 голосов
/ 07 мая 2018

Достаточно ли этого? Вы можете использовать три логических вектора для подмножества ваших данных.

Если вы хотите получить более подробную информацию, это поможет вам работать с некоторыми вашими данными. ( помощь )

lev <- c("Never", "Never", "Never", "Rarely", "Sometimes", "Often", "Very Often")

set.seed(1)

X <- factor(sample(c(lev, "Never"), 15, replace=TRUE), levels=unique(lev))
Y <- factor(sample(lev, 15, replace=TRUE), levels=unique(lev))

None <-   X %in% c("Never") & 
          Y %in% c("Never")

Mild <-   X %in% c("Rarely", "Sometimes", "Often", "Very Often") &
          Y %in% c("Never")

Severe <- Y %in% c("Rarely", "Sometimes", "Often", "Very Often")

Если вы хотите объединить логические векторы в один факторный вектор, это можно сделать примерно так:

Z0 <- rbind(None, Mild, Severe)
z <- which(Z0, arr.ind=TRUE)
Z <- factor(rownames(z), levels=rownames(Z0))

data.frame(X, Y, Z)
#             X          Y      Z
# 1       Never     Rarely Severe
# 2       Never      Often Severe
# 3   Sometimes Very Often Severe
# 4       Never      Never   None
# 5       Never      Often Severe
# 6       Never Very Often Severe
# 7       Never      Never   None
# 8       Often  Sometimes Severe
# 9       Often      Never   Mild
# 10      Never      Never   None
# 11      Never      Never   None
# 12      Never      Never   None
# 13      Often      Never   Mild
# 14     Rarely Very Often Severe
# 15 Very Often      Never   Mild
...