Ich habe 2 Matrizen, ich möchte sie vergleichen (row.name weise), um den Unterschied zu finden.Vergleichen Sie Matrizen, um die Unterschiede zu finden
> head(N1)
Total_Degree Transitivity Betweenness Closeness_All
2410016O06RIK 1 NaN 0.00000 0.0003124024
AGO1 4 0.1666667 37.00000 0.0003133814
APEX1 4 0.6666667 4.00000 0.0003144654
ATR 4 0.1666667 19.50000 0.0003128911
CASP3 24 0.0000000 806.00000 0.0002980626
CCND2 4 0.3333333 97.33333 0.0003132832
head(N2)
Total_Degree Transitivity Betweenness Closeness_All
2410016O06RIK 1 NaN 0.0 2.279982e-04
ADI1 1 NaN 0.0 1.728877e-05
AGO1 3 0.0000000 40.0 2.284670e-04
AIRN 1 NaN 0.0 1.721733e-05
APEX1 3 0.6666667 2.0 2.288330e-04
ATR 3 0.3333333 19.5 2.281542e-04
Viele der rows.name in N1 Sie in N2 existieren, möchte ich sie vergleichen und den Unterschied in einer neuen Matrix zu schreiben. Diejenigen, die für N1 oder N2 einzigartig sind, sollten erwähnt werden, dass sie entweder zu N1 oder N2 gehören.
Ich bin mir nicht sicher, welches ist das beste Kriterium, um den Unterschied zu berechnen, was ich mir vorstellen kann, ist eine einfache Addition aller Werte einer Zeile in N1 und subtrahiere diesen Wert vom additiven Wert der entsprechenden Zeile in N2.
Zum Beispiel ausgegeben werden soll:
> head(Compared)
Comparison Unique
2410016O06RIK 0.0002 Common
AGO1 -1.83 Common
APEX1 2.24 Common
ATR 0.0034 Common
CASP3 830.00029 N1
ADI1 1.0007288 N2
hier für row.name = 2410016O06RIK
, alle Werte von N1 und N2 wurden hinzugefügt und dann N1-N2
wurde in Comparison
Spalte geschrieben, da diese Zeile in beiden Matrizen üblich war so common
wurde in Unique
Spalte geschrieben.
Konnten Sie Code zur Verfügung stellen, um die Daten zu reproduzieren? Für die Eindeutigkeit würde ich mit inneren und linken/rechten Joins nach row.name gehen, dann einfach drei resultierende data.frames, und für den Unterschied könnte vielleicht 'all.equal()' den Job machen? Sie müssen angeben, was Sie mit einer "Differenz" meinen. –
@ M.D Ich lese die Textdateien hier, ich weiß nicht, wie ich Ihnen die Daten liefern kann. Aus Differenz meine ich "lasst uns diese Zeile betrachten. Namen sind unterschiedliche Personen und wir haben ihr Einkommen aus verschiedenen Quellen in verschiedenen Spalten. Wir berechnen ihr Gesamteinkommen (alle Werte einer Zeile addierend) in 2 Zeitpunkten (N1 und N2) und wir möchte die Person herausfinden, deren Einkommen sich über diese Zeitpunkte drastisch verändert hat (durch Subtraktion von N1 - N2) ". – user3253470
Das ist ein Entwurf der Lösung mit dem Paket data.table, wenn Sie nicht damit vertraut sind, werde ich versuchen, es ohne es zu schreiben: (Hier war der Code, aber ich werde es als eine Lösung für die Lesbarkeit veröffentlichen). –