【发布时间】:2021-03-17 11:32:05
【问题描述】:
我一直在尝试根据存储在列表中的位置(按 id 分组)从数据框中提取值。具体来说,在以下可重现的示例中,我有一个列表 (l1),其中包含数据帧 (df) 的某些行位置,按 id 分组。
id1 <- c(1,1,1,1,1,1,1,1,1,2,2)
ind1 <- c(1,3,5,8,9,10,12,14,17,1,3)
l1<-list(id1,ind1)
id <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2)
v2 <- c(5,6,1,2,4,5,8,9,12,12,2,3,6,7,8,1,9,4,19,2,5,6,3,4,9)
df<- data.frame(id,v2)
我想创建一个新的数据框,其中变量 v2 的值位于 l1 中指定的位置。期望的输出:
v3 <- c(5,1,4,9,12,12,3,7,9,5,3)
id2 <- c(1,1,1,1,1,1,1,1,1,2,2)
output <- data.frame(v3,id2)
我对如何解决这个问题有点迷茫,我试过了:
output <- group_by(id) %>% df[nrow(v2)==nrow(l1),]
但我收到错误消息:
UseMethod("group_by_") 中的错误:没有适用的方法 'group_by_' 应用于“c('double', 'numeric')”类的对象
有什么想法吗?
【问题讨论】: