2017-10-21 35 views
0

lassen Sie sich sagen, ich habe die folgende Tabelle:Assign gleicher Wert für alle Elemente im gleichen Cluster

Text ID Prior ID 
Text1 1 1 
Text2 1 2 
Text3 1 3 
Text4 2 4 

Mein Ziel: Für alle gleiche IDs in dem Datensatz, den gleichen Text Wert zuweisen. In diesem Fall möchte ich beispielsweise Text2 und Text3 in Text1 ändern, da die Werte in der ID-Spalte mit denen in der Prior-ID übereinstimmen.

Antwort

0

Lösung data.table

library(data.table) 
# Original table should be named d 
setDT(d) 

res <- merge(d, d[ID == `Prior ID`], "ID", all.x = TRUE)[is.na(Text.y), Text.y := Text.x] 
res <- res[, .(Text = Text.y, ID, `Prior ID` = `Prior ID.x`)] 

res 
    Text ID Prior ID 
1: Text1 1  1 
2: Text1 1  2 
3: Text1 1  3 
4: Text4 2  4 
+0

Dank mit! Ich kann das Beispiel jedoch nicht reproduzieren - ich habe immer die gleichen Ergebnisse in der Spalte Text wie in der ursprünglichen Tabelle. – Psych91

+0

Post 'Kopf (Res)' nach 'merge' – PoGibas

+1

Vielen Dank! Es gab eine Diskrepanz zwischen den Spaltennamen, sollte doppelt überprüft werden. – Psych91

Verwandte Themen