Crea dati di esempio:costringere una colonna di liste in una stringa in un frame di dati R
id <- c(12, 32, 42, 42, 52, 52, 67, 67)
relationship_id <- c(15,1,59,1,61,6,59,1)
sample.data <- data.frame(id,relationship_id)
per ogni ID che appare più di una volta, concatenare il relationship_id:
combo <- aggregate(relationship_id ~ id, data = sample.data, paste, sep=",")
table(combo$relationship_id)
Error in table(combo$relationship_id) :
all arguments must have the same length
ho capito che cosa ha causato questo errore:
class(combo$relationship_id)
[1] "list"
Ma quando provo a forzare il vettore di elenco a un vettore di caratteri:
combo["relationship_id"] <- lapply(combo["relationship_id"], as.character)
> head(combo)
id relationship_id
1 12 15
2 32 1
3 42 c("59", "1")
4 52 c("61", "6")
5 67 c("59", "1")
Esso comprende la sintassi di concatenazione ... ho capito che posso analizzare l'output in modo che sia utilizzabile, ma perché sta succedendo questo? C'è un modo più semplice per ripulire l'output?
Modifica 'sep' to' collapse' e dovresti essere in grado di fare ciò che ti aspettavi. – A5C1D2H2I1M1N2O1R2T1
Bel lavoro con una domanda riproducibile come prima domanda su SO. (+1) – A5C1D2H2I1M1N2O1R2T1