Я хочу изменить значения в образцах с общим продуктом по строкам менее 5 до нуля, оставив остальные как есть.
Я пробовал:
dat %>%
group_by(snpID) %>%
mutate_at(vars(2:6),
list(~ifelse(sum(.) < 5, 0, .)))
Результат: (сумма каждой строки заменяет каждую строку)
dat %>%
group_by(snpID) %>%
mutate_at(vars(2:6),
list(~ifelse(sum(.) < 5, 0, ungroup(.))))
Ошибка:
Ошибка в UseMethod («разгруппировать»):
неприменимый метод для ungroup, примененный к объекту класса "c ('integer', 'numeric')"
Оригинал:
snpID f1 f2 f3 m1 m2 m3
A_001 2 5 2 0 1 3
A_001 0 3 8 2 5 10
A_002 11 5 12 7 0 2
A_002 2 6 5 14 5 3
Что я хочу:
snpID f1 f2 f3 m1 m2 m3
A_001 0 5 2 0 1 3
A_001 0 3 8 0 5 10
A_002 11 5 12 7 0 2
A_002 2 6 5 14 5 3
Сумма A_001
в f1
и m1
образцов <5, поэтому обе строки возвращаются с нулевым значением. </p>
Любая помощь будет оценена.