Заменить значения для нескольких строк на основе предыдущих строк - PullRequest
0 голосов
/ 21 февраля 2019

Прежде всего, позвольте извиниться за не очень конкретный заголовок.

У меня есть фрейм данных со структурой, как показано ниже:

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")

Не очень просто, извините!Однако я не могу придумать лучшего способа описать это.

Буду благодарен за любую помощь!

...