考虑以下数据帧:
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列中至少出现一个“Yes”会导致每个单独ID在B列中只出现“Yes”值。我尝试了以下两种方法(我觉得我差不多做到了):
library(dplyr)
df <- df %>%
group_by(ID) %>%
mutate(B1=ifelse(A == "Yes", "Yes", "No")) # B1 is the new column for comparison
不幸的是,这与
和
df2 <- transform(df, B1= ave(A, ID, FUN=function(x) x[A == "Yes"]))
生成错误消息:
1: 在x中[…]<-m:
要更换的项目数量不是更换长度的倍数
非常感谢您的帮助。