Проверьте соответствие между списком значений и записью столбца в R - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть набор данных со столбцом Disease, который содержит строковые значения.У меня также есть список имен с редкими заболеваниями rare_disease.

Я хочу проверить для каждой ячейки столбца Disease, содержит ли он элемент из списка rare_disease и, если это так, создать новый столбец в моем фрейме данных и присвоить значение 1эта запись.

Я попытался использовать функцию ifelse, например, так:

FinalData$RareDisease <- ifelse(rare_disease %in% FinalData$Disease,1,0)

Но я предполагаю, что проверяет, совпадают ли соответствующие строки в обеих переменных, и выдает ошибку.Вместо этого я хочу, чтобы каждая ячейка Disease проверялась по каждому отдельному элементу rare_disease, если это имеет смысл.

Я также пробовал match и is.element(), как предлагается здесь Проверьте, содержит ли вектор данный элемент , но они также не работают.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Вот воспроизводимый пример / решение - обратите внимание, что вы можете просто использовать as.numeric вместо ifelse:

df <- data.frame(
  idx = 1:10,
  Disease = letters[1:10]
)
rare_disease <- letters[c(1, 5, 9)]

df
#>    idx Disease
#> 1    1       a
#> 2    2       b
#> 3    3       c
#> 4    4       d
#> 5    5       e
#> 6    6       f
#> 7    7       g
#> 8    8       h
#> 9    9       i
#> 10  10       j
rare_disease
#> [1] "a" "e" "i"

df$RareDisease <- as.numeric(df$Disease %in% rare_disease)
df
#>    idx Disease RareDisease
#> 1    1       a           1
#> 2    2       b           0
#> 3    3       c           0
#> 4    4       d           0
#> 5    5       e           1
#> 6    6       f           0
#> 7    7       g           0
#> 8    8       h           0
#> 9    9       i           1
#> 10  10       j           0

Создано в 2019-04-30 пакетом Представить (v0.2.1)

0 голосов
/ 30 апреля 2019

Вы почти правы, но вы должны перевернуть это:

FinalData$RareDisease <- ifelse(rare_disease %in% FinalData$Disease,1,0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...