Прежде всего, позвольте извиниться за не очень конкретный заголовок.
У меня есть фрейм данных со структурой, как показано ниже:
alpha <- data.frame(c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4),
c("A", "A", "A", "A", "B", "B", "B", "B", "C", "C", "C", "C"),
c(1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1),
c(0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1))
colnames(alpha) <- c("key", "group", "v1", "v2")
Итерации по строкамфрейм данных я хочу сделать следующее:
В случаях, когда v1 равен 1, но v2 не равен 1, так как v1 последний раз был равен 1, я хочу заменить значение v1с 0.
В случаях, когда v2 равно 1, но v1 не равно 1, так как v2 последний раз был равен 1, я хочу заменить значение v2 на 0.
Более того, я хочу, чтобы это делалось внутри каждой "группы", другими словами, рассматривая строки с разными значениями для "группы" как отдельные элементы.
Если v1 и v2 равны 1, я хочу заменить значения обоих на 0.
По завершении фрейм данных должен выглядеть следующим образом:
alpha <- data.frame(c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4),
c("A", "A", "A", "A", "B", "B", "B", "B", "C", "C", "C", "C"),
c(1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0),
c(0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1))
colnames(alpha) <- c("key", "group", "v1", "v2")
Не очень просто, извините!Однако я не могу придумать лучшего способа описать это.
Буду благодарен за любую помощь!