再会,
d <- c(1,1,1,2,2,2,3,3,3)
e <- c(5,6,7,5,6,7,5,6,7)
f <- c(0,0,1,0,1,0,0,0,1)
df <- data.frame(d,e,f)
我有类似上面的数据。我需要做的是为d的每个唯一元素找到f中的第一个非零值,并在e中找到对应的值。具体来说,我想要另一个向量 g 所以它看起来像这样:
d <- c(1,1,1,2,2,2,3,3,3)
e <- c(5,6,7,5,6,7,5,6,7)
f <- c(0,0,1,0,1,0,0,0,1)
g <- c(7,7,7,6,6,6,7,7,7)
df <- data.frame(d,e,f,g)
建议轻松做到这一点?我以为我可以使用 split(),但是在拆分后我无法使用 which()。我可以像这样使用 ave:
foo <- function(x){which(x>0)[1]}
df$t <- ave(df$f,df$d,FUN=foo)
但是我很难找到 e 的值。任何帮助表示赞赏。