我是stack的新成员,正在学习用r编程。
我有一个包含三列的数据框,requete
,id_requete
和possition_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
和相关矢量的数据帧。
答案 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