Изменить единицы и значения фрейма данных - PullRequest
0 голосов
/ 15 января 2019

У меня есть данные с концентрациями соединений и их целевым значением в воде. Для некоторых соединений зарегистрированные значения имеют единицы, отличные от их максимального значения.

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

  Value    Dimension  Target   Unit
A  0.001    ug/L       12     ng/L
B  0.1      ug/L       1      ug/L
C  0.25     ug/L       1      ng/L

Я хочу получить:

   Value    Dimension  Target   Unit
A  0.001    ug/L       0.012     ug/L
B  0.1      ug/L       1         ug/L
C  0.25     ug/L       0.001     ug/L

1 нг / л = 1000 мкг / л

Как я могу сделать это в R?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Вы можете использовать вложенный оператор ifelse, чтобы перехватить все 3 сценария (одинаковые, от ng до ug и от ug до ng)

ifelse(df$Dimension == df$Unit, df$Target, 
       ifelse(df$Dimension != df$Unit & grepl('ug', df$Dimension), df$Target / 1000, 
                                                                        df$Target * 1000))

#[1] 0.012 1.000 0.001
0 голосов
/ 15 января 2019

Вы можете использовать ifelse. Если dat - предоставленный вами data.frame, то должно работать что-то вроде этого:

dat[, "Target"] <- ifelse(dat[,"Unit"]=="ng/L", dat[,"Target"]/1000, dat[,"Target"])

Если у вас более двух разных юнитов, вам понадобится последовательно вкладывать ifelse вызов или ifelse.

Обратите внимание, что ifelse - это векторизованная версия if, которая обрабатывает весь столбец одновременно.

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