mutate_at с использованием нескольких условий - PullRequest
0 голосов
/ 25 января 2020

Я бы преобразовал столбцы, содержащие 1 или 2 в своих именах моего кадра данных test, разделив их на столбец Unit.

Вроде бы работает с одним условием, но я не знаю, как добавить условие OR 1

 test= test%>% mutate_at(vars(contains('2')), funs(./Unit))

Есть идеи?

Identifier Source 196001     200006  Unit
1:     top    HH   NA        NA      1e-06
2:     top2   BB   NA        4569.6  1e+00

1 Ответ

1 голос
/ 25 января 2020

Это должно работать:

test = read.table(header = T,text="
Identifier Source 196001     200006  Unit
top        HH     65         888     3
top2       BB     0111       9886    8") #I modified your values so you can see the divisions

test %>% mutate_at(vars(contains('2'), contains('1')), funs(./Unit))

По сути, вы говорите «выберите переменные, которые содержат 2, а также выберите переменные, которые содержат 1».

Если вы хотите выбрать переменные, которые содержат 1 и 2, это будет другой проблемой и может потребовать регулярное выражение (с dplyr::match).

Кроме того, обратите внимание, что funs мягко устарел, теперь вы должны использовать лямбда-функции:

test = test %>% mutate_at(vars(contains('2'), contains('1')), ~./Unit)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...