У меня есть набор данных, который содержит данные о активности мышц от группы спортсменов, у которых была реконструкция ACL. Я хочу переназначить сторону конечности, чтобы указать конечность ACLR и неповрежденную конечность. Глядя на набор данных под названием EMG ниже, предположим, что у Джона был левый ACLR, а Bob - правый ACLR.изменить значение на основе подмножества другой переменной в dplyr
athlete limb EMG_value
John left 0.8
John right 1.2
Bob left 0.5
Bob right 0.9
Я хотел бы набор данных выглядеть следующим образом:
athlete limb EMG_value
John ACLR 0.8
John uninjured 1.2
Bob uninjured 0.5
Bob ACLR 0.9
Мой первоначальный план был Подмножество данные по атлета, изменить значение конечности, а затем связать данные обратно в оригинале набор данных.
Отрывок из процесса это выглядит следующим образом:
John = subset(EMG, athlete=="John")
John$side<- as.character(John$side)
John$side[John$side=="Left"]="ACLR"
John$side[John$side=="Right"]="Uninjured"
John$side = as.factor(John$side)
Bob = subset(EMG, athlete=="Bob")
Bob$side<- as.character(Bob$side)
Bob$side[Bob$side=="Left"]="Uninjured"
Bob$side[Bob$side=="Right"]="ACLR"
Bob$side = as.factor(Bob$side)
EMG2 = rbind(Bob, John)
Я уверен, что есть способ сделать это быстрее, используя трубопроводы данных в dplyr. Я уверен, что есть способ заменить значение переменной на основе заданного условия.
Логика: если спортсмен == Боб затем заменит левый на ACLR и замените правой на неповрежденный.
Спасибо за любую помощь, которую вы можете предоставить.
Matt
Это отлично поработало - я не знал об илсе и хору. Для меня это был игровой чейнджер. Спасибо, и спасибо за указание на ошибку в последней части моего вопроса. Отличное решение. –
Caveat emptor: 'ifelse' не является идеальным решением для всего и имеет известные проблемы с производительностью. @hadley [обсуждал некоторые проблемы с производительностью с 'ifelse'] (http://adv-r.had.co.nz/Performance.html), но когда скорость не вызывает беспокойства, я считаю ее относительно« элегантной »и очень удобочитаемый. – r2evans