Durante il tentativo di ottenere i dati idonei per l'analisi, non riesco a farlo correttamente. Presumere Ho un set di dati in questa forma:Ricerca di righe comuni in R
df1
V1 V2df1
a H
b Y
c Y
df2
V1 V2df2
a Y
j H
b Y
e altri tre (5 set di dati di lunghezza diversa ALLtogether). Quello che sto cercando di fare è il seguente. Per prima cosa devo trovare tutti gli elementi comuni dalla prima colonna (V1) - in questo caso quelli sono: a, b. Quindi, in base a questi elementi comuni, sto provando a creare un set di dati unito, in cui i valori di V1 sarebbero comuni a tutti e cinque i set di dati e i valori di altre colonne verrebbero aggiunti nella stessa riga. Quindi, per spiegare con un esempio, mio risultato dovrebbe essere simile a:
V1 V2df1 V2df2
a H Y
b Y Y
sono riuscito ad ottenere un certo codice funziona, ma apperently i risultati non sono corretti. Quello che ho fatto: leggere tutte le righe di tutti i file in variabili (esempio: a<-df1[,1]
e così via) e trovare le righe comuni, come:
red<-Reduce(intersect, list(a,b,c,d,e))
poi filtrato set di dati specifici come:
df1 <- unique(filter(df1, V1 %in% red))
I ordinate ogni set di dati secondo riga:
df1<-data.frame(df1[with(df1, order(V1)),])
e cancellate duplicati (di elementi in prima colonna):
df1<- df1[unique(df1$V1),]
Ho poi creato un nuovo set di dati con:
newdata<-data.frame(V1common=df1[,1], V2df1=df1[,2],V2df2=df2[,2]...)
... significa che per tutti e cinque set di dati. In realtà ho ottenuto lo stesso numero di righe (un buon segno dato che ci sono lo stesso numero di righe all'interno dell'intersezione) e poi ho aggiunto altre colonne ordinate, ma qualcosa non si sommava. Grazie per qualsiasi consiglio. (Ho omesso l'uso di librerie e simili, il codice è a scopo illustrativo).
See '? Merge'. Immagino che 'unire (df1, df2)' sia quello che stai cercando. – nicola
Generalmente buone prassi includere anche la menzione delle librerie, credo. Ad esempio, la gente R potrebbe non sapere 'filtro' (a parte la funzione delle serie temporali nella base R). – Frank
Idea nicolas espandibile, per più set di dati, utilizzare 'Riduci' con' unione ', cioè 'Riduci (funzione (...) unione (..., per =' V1 '), mget (incolla0 (' df ', 1 : 5))) ' – akrun