Изменение значения строк, которые принадлежат одной группе и хотя бы одному наблюдению в группе, удовлетворяет условию с dplyr - PullRequest
0 голосов
/ 09 июля 2020

Допустим, у меня есть этот фрейм данных:

df <- data.frame(Sequence_ID = c(100,100,100,100,101,101,101,101,102,102,102,102,103,103,103,103), Success = c(1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1))

Если какая-либо из строк с одинаковым Sequence_ID имеет 1 в столбце Success, тогда я хочу, чтобы все строки в этой группе имели 1 столбец успеха.

Я могу получить желаемый результат с помощью следующего кода:

for(i in 1:nrow(df)){
  x <- df$Sequence_ID[i]
  if (any(df$success[df$Sequence_ID == x] == 1)){
    df$success[df$Sequence_ID == x] <- 1
  }
}

Мне было интересно, есть ли способ сделать это в dplyr. Заранее спасибо

1 Ответ

0 голосов
/ 09 июля 2020
library(dplyr)

df %>%
  group_by(Sequence_ID) %>%
  mutate(
    Success = as.integer(any(as.logical(Success)))
  )

делает свое дело :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...