как сгруппировать элементы таблицы в векторе - PullRequest
1 голос
/ 28 мая 2019

Я новый член стека и учусь программировать на 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 и связанными векторами.

1 Ответ

0 голосов
/ 28 мая 2019

Вот решение в базе 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...