Я хотел бы создать несколько новых столбцов во фрейме данных на основе условия. Из прочтения других вопросов я думаю, что для этого требуется функция case_when()
в функции mutate()
. Хотя я знаком с созданием новых столбцов с использованием mutate()
, я не могу заставить его работать с различными функциями, основанными на условных выражениях.
require(tidyverse)
df1 <- tibble(a = c(-0.5, 0, 0.1, 0.5, 0.8),
b = c(-0.2, NA, 0.3, 0.1, 0.2),
c = c(0, 0.2, 0.1, 0.3, 0.1),
d = c(NA, -0.1, 0.7, 0.6, 0.4),
e = c(0.2, 0.6, NA, 0.4, 0.5),
f = c(0.7, 0.2, NA, 0.5, 0.5))
Фактический фрейм данных содержит 60 переменных, но с использованием df1
в качестве примера я хотел бы:
i) Определить, какие столбцы содержат значение (я) ≤0
ii) Для каждого столбца (столбцов), который содержит значение (я) ≤0 создайте новый столбец (столбцы) log(x + 1)
iii) Для каждого столбца, который содержит только значения> 0, создайте новый столбец (столбцы) log(x)
NA
значения должны быть сохранены как NA
в новых столбцах.
tidyverse
решение будет фантастическим c, потому что я нахожу синтаксис более легким для понимания, но ценю любое решение.