в R проверьте, появляется ли 1 в строке (в любом из выбранных столбцов) - PullRequest
0 голосов
/ 04 июля 2018

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

Я не хочу, чтобы он проверял все столбцы в кадре данных, только указанные по имени.

Давайте представим, что интересующие вас столбцы: вопрос1, курильщик и пьяница

У меня есть:

Subject    question1 question2   smoker  drinker 
   A          1          0          0        1             
   B          0          1          0        0          
   C          0          0          0        0         

Я хочу:

Subject    question1 question2  smoker  drinker   q1_smoker_or_drinker
   A          1          0          0        1         1             
   B          0          1          0        0         0            
   C          0          0          0        0         0     

Я пытался:

list1<- c('Subject', 'question1','smoker','drinker')
newdata <- data_scored[, list1]
grepl("1", newdata[2:4])

Но возвращаемое значение - это вектор с логическими значениями, и мне не удалось объединить это с полными данными в виде столбца.

Я знаю, что это должно быть очень просто, но почему-то у меня возникают проблемы с этим. Большое спасибо за Вашу помощь!

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете использовать оператор "или", |. Здесь все работает нормально, потому что R будет воспринимать 1 как true, а 0 как false:

> df
  Subject question1 question2 smoker drinker
1       A         1         0      0       1
2       B         0         1      0       0
3       C         0         0      0       0
> df$q1_smoke_drink = df$question1 | df$smoker | df$drinker 
> df
  Subject question1 question2 smoker drinker q1_smoke_drink
1       A         1         0      0       1           TRUE
2       B         0         1      0       0          FALSE
3       C         0         0      0       0          FALSE

Если у вас нет 1 и 0, | все равно будет работать нормально, вам просто нужно быть более точным в отношении условия, например,

(df$question3 == "a") | (df$question4 == "b")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...