оператор if if, повторяющий первое значение в выражении вместо вычисления для каждого - PullRequest
0 голосов
/ 31 декабря 2018

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

Я использовал следующий код:

#Add new column for each EQ5D measure contribution
mobility_contribution=if(combined_data<span class="math-container">$mobility==1){0}else
  if(combined_data$</span>mobility==2){0.058}else 
if(combined_data<span class="math-container">$mobility==3){0.076}else 
  if(combined_data$</span>mobility==4){0.207}else 
    if(combined_data$mobility==5){0.274}

Первыйстрока имеет показатель мобильности 4 (т. е. результат должен быть 0,207).Тем не менее, новый столбец повторяет 0,207 во всех последующих строках, даже если показатели мобильности меняются.

Как мне это исправить?

Спасибо!Kay

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Надеюсь, вложенное ifelse будет работать

mobility_contribution <- ifelse(combined_data$mobility==1,0,ifelse(combined_data$mobility==2,0.058,ifelse(combined_data$mobility==3,0.076,ifelse(combined_data$mobility==4,0.207,0.274))))

, пожалуйста, попробуйте это

0 голосов
/ 31 декабря 2018

Я не эксперт по R, но моя интуиция заключается в том, чтобы попробовать это:

mapping <- Vectorize(function(mobility){
    return switch(mobility,0,0.058,0.076,0.207,0.274)
})

и затем применить эту функцию к вашему столбцу (в этом я не уверен, как лучше это сделать дляТиббл но это будет примерно так):

mobility_contribution <- lapply(combined_data$mobility, mapping)

Некоторые ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...