如何在向量中对表格的元素进行分组

时间:2019-05-28 07:52:19

标签: r dataframe vector

我是stack的新成员,正在学习用r编程。 我有一个包含三列的数据框,requeteid_requetepossition_url_cliquee。 对于每个requete,我们有不同的id_requete。 对于每个id_requete,我们有1个或多个position_url_cliquee的值。 我想将position_url_cliquee的向量放入id_requete的向量中。 我创建了此函数,该函数将必须返回带有id_requete和相关向量的数组。 但这并没有我想要的

table_data=group_by(table_data,requete,id_requete)

tab_vect=data.frame(id_requete=c(),vect=c(v[]))

vecteurs=function(table_data){
  id=table_data$id_requete[1]
  j=1
  for (i in 1:5) {
    if(id==table_data$id_requete[i]){
      v[j]=c(table_data$position_url_cliquee[i])
      j=j+1
    }
    else{
      tab_vect=rbind(id,v[j])
      j=1
      v=c()
      v[j]=c(table_data$position_url_cliquee[i])

    }
  }
  return(tab_vect)
}

tablevect=vecteurs(table_data)

我想输出带有不同的id_requete和相关矢量的数据帧。

1 个答案:

答案 0 :(得分:0)

这是基于R的解决方案:

ids <- sort(unique(table_data$id_requete))
res <- lapply(ids, function(id) sort(table_data$position_url_cliquee[table_data$id_requete == id]))
names(res) <- ids
res

输出:

$`45`
[1] 3 4

$`123`
[1] 1 2 5

然后要转换为数据框,必须使用NA完成值:

tmax <- max(sapply(res, length))
res <- lapply(res, function(r) { length(r) <- tmax; r })
as.data.frame(res)

输出:

  X45 X123
1   3    1
2   4    2
3  NA    5