2016-12-23 5 views
0

У меня есть следующие данные:как очистить OBS значения в колонке в R

head(MS.data.in) 
    encounter_id patient_nbr   race gender  age weight admission_type_id 
1  2278392  8222157  Caucasian Female [0-10)  ?     6 
2  149190 55629189  Caucasian Female [10-20)  ?     1 
3  64410 86047875 AfricanAmerican Female [20-30)  ?     1 
4  500364 82442376  Caucasian Male [30-40)  ?     1 
5  16680 42519267  Caucasian Male [40-50)  ?     1 
6  35754 82637451  Caucasian Male [50-60)  ?     2 

Я WUD хотите изменить набл колонки «возраст», взяв верхние 2 цифры данного интервала то как показано ниже:

head(MS.data.in$age) 
[1] 10 20 30 40 50 60 

ответ

3

Мы можем использовать sub для извлечения значений с помощью не соответствующих символов, пока - (.*-), а затем по номерам внутри захвата группы ((\\d+)), а затем символов до конца строки (.*) и замените его ссылкой (\\1) группы захвата.

MS.data.in$age <- as.numeric(sub(".*-(\\d+).*", "\\1", MS.data.in$age)) 
MS.data.in$age 
#[1] 10 20 30 40 50 60 
+1

отлично .. это займет время для меня, чтобы понять, как работает «под» ..... пыталась выполнить первые две цифры интервала путем модификации кода. – Nishant

+0

@Nishant Спасибо за сообщение. Здесь ключ состоит в том, что мы использовали для сопоставления всех символов unit '' 'ie'. * - ', и из примера есть числа, которые следуют за' -' ('\\ d +' - '+' означает один или несколько) мы фиксируем в группе, то есть внутри круглых скобок ('(...)'), и заменяем на '\\ 1', так как это первая группа захвата. Вы также можете проверить [здесь] (http://stackoverflow.com/help/someone-answers) – akrun

 Смежные вопросы

  • Нет связанных вопросов^_^