Как добавить вычисленные значения в существующий столбец в R - PullRequest
0 голосов
/ 30 октября 2018

У меня есть фрейм данных (файл), который имеет два столбца:

Path length: 0.5; 0.5; NA; 5; NA; 8; NA
Global efficiency: NA; NA; 0.8; 0.2; 0.3; NA; NA

Теперь я хочу преобразовать глобальные значения эффективности в значения длины пути: path length = 1 / global efficiency. Я хочу сделать это ТОЛЬКО если значение длины пути = NA. Затем я хочу добавить рассчитанную длину пути к существующему столбцу «длина пути». Любая помощь, как это сделать?

Я уже сделал:

  ifelse(file$P_L_Mean != 'NA')
    {
    file$P_L_Mean <- 1/file$P_Eglob_Mean
    }

Но это не добавляет значения в существующий столбец ...

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 октября 2018
X=data.frame(path_length=c(0.5,0.5,NA,5,NA,8),global_eff=c(NA,NA,0.8,0.2,0.3,NA))

fun=Vectorize(function(x,y){if (is.na(x)){return(1/y)}})
X= X %>% mutate(global_eff_2=fun(path_length,global_eff))
0 голосов
/ 30 октября 2018

Мы создаем логический индекс с is.na и присваиваем

i1 <- is.na(file$P_L_Mean)
file$P_L_Mean[i1] <- 1/file$P_Eglob_Mean[i1]

Мы также можем сделать это с ifelse

file$P_L_Mean <- with(file, ifelse(is.na(P_L_Mean), 1/P_Eglob_Mean, P_L_Mean))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...