Semplice manipolazione dei dati in r
-
07-11-2019 - |
Domanda
@Aniko sottolinea che un modo per visualizzare il mio problema è che devo trovare i componenti collegati di un grafico, in cui i vertici sono chiamati gruppi e variabili group
e nominated_group
Indicare un bordi tra questi due gruppi. Il mio obiettivo è creare una variabile parent_Group
che indicizza i componenti collegati. O come ho messo prima:
Ho un frame dati con quattro variabili: ID
, group
, e nominated_ID
, e nominated_Group
.
Considera i gruppi gemelli: i gruppi A e B sono gruppi gemelli se c'è almeno un caso nei dati in cui Group == A e Nominated_Group == B o viceversa.
Vorrei creare una variabile parent_group
che assume un valore unico per ogni serie di gruppi gemelli. In altre parole, non dovrebbero verificarsi nomination tra i casi in diversi parent_group
S. Fare il parent_group
I numeri sequenziali sembrano una buona idea.
Molte grazie per l'aiuto che ho già ricevuto qui! Non posso davvero contribuire qui, ma nota che provo a pagarlo su Stats.Exchange e su Wikipedia.
Nei miei dati falsi, A e B sono gruppi gemelli. Entrambi i casi ID = 4 o ID = 5 sono sufficienti per renderlo vero. Ogni gruppo è anche il loro gruppo gemello. L'obiettivo, la creazione di parent_group
, dovrebbe provocare uno parent_group
Per tutti i casi in A o B e in un altro parent_group
per il gruppo c
df <- data.frame(ID = c(9, 5, 2, 4, 3, 7),
group = c("A", "A", "B", "B", "A", "C"),
nominated_ID = c(9, 8, 4, 9, 2, 7) )
df$nominated_group <- with(df, group[match(nominated_ID, ID)])
df
ID group nominated_ID nominated_group
1 9 A 9 A
2 5 A 8 <NA>
3 2 B 4 B
4 4 B 9 A
5 3 A 2 B
6 7 C 7 C
Nessuna soluzione corretta