Мне нужна помощь в создании категориального значения (называемого x2) с помощью оператора ifelse для строковой переменной x1. Или, конечно, что-то еще, кроме ifelse, но я думаю, что он должен работать с ifelse?
изображение фрейма данных
набран фрейм данных:
номер пациента <- c ('1', '2', '3') <br>x1 <- c ('54836', '12789', '78955') </p>
класс из x1 это «характер». Символы в x1 имеют несколько значений.
если первый символ в x1 == 1, то я хочу, чтобы новая переменная x2 стала «да», если нет, то «нет». Я сделал следующее: создал новый столбец (с именем x1.1), используя substr , а затем использовал оператор ifelse для этого нового столбца, и это сработало.
data $ x1.1 <- substr (data $ x1, 1, 1) # создать x1.1, взяв из x1 первый символ, и использовать всего 1 символ </p>
data $ x2 <- ifelse (data $ x1.1 == 1, 'да', 'нет') </p>
изображение фрейма данных с добавленными x1.1 и x2
Но мне интересно, смогу ли я сделать это короче. Так что получите x2 без необходимости создавать x1.1. Я имел в виду что-то подобное, но это не работает:
data $ x2 <- ifelse (data $ x1 [1] == 1, 'yes', 'no') # поэтому я вместо 'x1', я называю 'x1 [1]', так что это то, что я хочу, чтобы код делал: </p>
для пациента 1, если первый символ в x1 == 1, результат в новом столбце x2 = = 'да', если нет, то 'нет'
для пациента 2, если первый символ в x1 == 1, результат в новом столбце x2 == 'да', если нет, то 'нет '
для пациента 3, если первый символ в x1 == 1, результат в новом столбце x2 ==' да ', если нет, то' нет '
Причем, а не глядя на первый символ, я также хотел бы иметь возможность:
- смотреть на второй символ
- смотреть на второй + третий символ вместе
Есть способ для меня это сделать, но вместо одного x1 у меня фактически есть x1, x2 x3 .... x29 x30. И в них есть 4 значения, так что если я буду делать это «по-своему», это будет означать, что я сначала должен создать 120 новых столбцов, прежде чем я смогу даже начать создание правильных соответствующих категориальных столбцов. Это увеличивает мой фрейм данных и дает много строк кода, которые я хотел бы предотвратить.
Надеюсь, это сообщество может мне помочь. Ура :)
PS Это мой первый пост о stackoverflow, если у вас есть советы о том, как улучшить мой пост, дайте мне знать (я уже смотрел некоторые видео на YouTube, но они не помогли, мой самый большой проблема nog заключается в том, как красиво показать фрейм данных)
PS Я использовал функцию поиска, но не смог найти ответа на этот вопрос.