Изменить единицы и значения фрейма данных

Я наткнулся на эту интересную статью от UncleBob The Little Mocker . Это объясняет всю терминологию очень легко понять, поэтому она полезна для новичков. Статья Мартина Фаулерса читается специально для начинающих, таких как я.

0
задан Sotos 15 January 2019 в 15:48
поделиться

2 ответа

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

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

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

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

0
ответ дан Karsten W. 15 January 2019 в 15:48
поделиться

Вы можете использовать вложенное выражение 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
ответ дан Sotos 15 January 2019 в 15:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: