Как обновить строки с условием 0 из другой строки в R

#r #dplyr #tidyverse

Вопрос:

У нас есть фрейм данных, который выглядит следующим образом :

 Group1  Group2  Group3  Group4  Group5  Group6
1         0         1      0       0      0
0         1         0      1       0      0
0         0         1      0       1      0
1         0         1      0       0      0
1         0         0      0       1      0
 

У нас есть двоичный расчет с соответствующими группами, где Group1 и 2, вычитаемые из группы 3 и 4, дают группу 5 и 6

Мы получаем 0 в группах 5 и 6, и мы хотим обновить их с помощью Групп1 и 2

У нас есть более 100 строк с аналогичными условиями, и нам нужен вывод, как показано ниже:

   Group1    Group2  Group3  Group4  Group5  Group6
    1         0         1      0       1      0
    0         1         0      1       0      1
    0         0         1      0       1      0
    1         0         1      0       1      0
    1         0         0      0       1      0
 

Комментарии:

1. Вы просто хотите df$Group5 <- df$Group1 и то же самое для Group6 ? Какова логика (если таковая имеется), которую вы пытаетесь здесь реализовать?

2. @RonakShah Извини, чувак, это моя ошибка, которую я обновил, теперь, пожалуйста, разберись в этом

3. Я обновляю свой ответ после того, как вы добавили условие.

4. Я все еще этого не понимаю. Группа 3 — Группа 1 дает -1 для последней строки, но у вас есть 1 в столбце group5.

Ответ №1:

Редактируйте в соответствии с вашими условиями

     data %>%
      mutate(Group5 = abs(Group1 - Group3),
             Group6 = abs(Group2 - Group4)) %>%
      mutate(Group5 = Group5   Group1 * as.integer(!(as.logical(Group5) | as.logical(Group6))),
             Group6 = Group6   Group2 * as.integer(!(as.logical(Group5) | as.logical(Group6)))
             )
 

Обновляйте только тогда, когда группы 5 и 6 равны 0. Если нет, пожалуйста, дайте мне знать