Рассмотрим следующий фрейм данных:
ID <- c(1,1,1,2,2,3,3,3,3)
A <- c("No","No","Yes","Yes","Yes","No","No","No","No")
B <- c("Yes","Yes","Yes","Yes","Yes","No","No","No","No")
df <- data.frame(ID,A,B)
Я хочу создать столбец B, где появление хотя бы одного «Да» в столбце A приводит только к значениям «Да» в столбце B для каждого отдельного идентификатора. Я пробовал два следующих подхода (я чувствую, что почти достиг цели):
library(dplyr)
df <- df %>%
group_by(ID) %>%
mutate(B1=ifelse(A == "Yes", "Yes", "No")) # B1 is the new column for comparison
к сожалению, это дает тот же столбец, что и A
а также
df2 <- transform(df, B1= ave(A, ID, FUN=function(x) x[A == "Yes"]))
выдает сообщение об ошибке:
1: In x[...] ‹- m : количество элементов для замены не кратно длине замены
Помощь будет высоко оценена.