2017-02-23 1 views
1

Bevor ich meine Frage hier einreichte, suchte ich nach ähnlichen Fragen, aber ich fand kein ähnliches Ergebnis wie ich es möchte. Ich habe zwei Datenrahmen Tabellen in den Zeilen die gleichen Daten haben (Jahr) und in der Linie, die die gleichen Unternehmen, aber jeder Datenrahmen eine Variable und die Werte in den Tabellen erklären sind eine Klassifizierung mit Buchstaben:Erstellen eines Datenrahmens basierend auf DF2 über DF1 mit den gleichen Zeilen und Zeilen (spezielle Zusammenführung mit Bedingung)

(BM) Dataframe 

Name | X1992 | X1993 | X1994 | X1995  
---- | ----- | ----- | ----- | ---- 
xyze | Na | Na | B | B 
zyea | A | B | B | A 
ddfa | Na | Na | D | D 
arer | C | C | A | A 
zaer | Na | A | A | B 
wxcv | A | A | B | A 
lklj | B | D | D | D 
jgie | B | B | C | C 
azer | C | B | C | B 
lmoz | Na | Na | Na | A 
jzea | D | D | D | C 

(Size) Dataframe 

Name | X1992 | X1993 | X1994 | X1995  
---- ----- ----- ----- ---- 
xyze Na  Na  D  C 
zyea B  D  A  A 
ddfa Na  Na  D  C 
arer A  A  C  C 
zaer Na  A  A  D 
wxcv C  B  C  A 
lklj C  C  B  D 
jgie D  B  C  D 
azer B  A  A  B 
lmoz Na  Na  Na  C 
jzea A  D  A  B 

I möchte wie dies unter
ein Ergebnisse haben (Beispiel: Unternehmen mit BM "a" & Größe "C")

>A_C 
Name | X1992 | X1993 | X1994 | X1995  
---- ----- ----- ----- ---- 
xyze .  .  .  . 
zyea .  .  .  . 
ddfa .  .  .  . 
arer .  .  .  T 
zaer .  .  T  . 
wxcv T  .  .  . 
lklj .  .  .  . 
jgie .  .  .  . 
azer .  .  .  . 
lmoz .  .  .  T 
jzea .  .  .  . 

dies ein kleiner Vorsprung mit der Realität.

+0

Bitte verwenden Sie 'dput' die Beispiele zu zeigen. Versuchen Sie 'Map (Funktion (x, y) x% in% c ('A', 'C') und y% in% c ('A', 'C'), BM [-1], Größe [-1 ]) ' – akrun

+0

Es kann Ihnen auch helfen, [diese Notiz] (ftp://cran.r-project.org/pub/R/web/packages/tidyr/vignettes/tidy-data.html) auf sauberen Daten zu lesen. – p0bs

Antwort

0

Dies kann durch einen Vergleich der entsprechenden Spalten mit Map

data.frame(Map(function(x,y) x %in% "A" & y %in% "C", BM[-1], Size[-1])) 

hier gemacht wird, wird die Ausgabe ein data.frame mit logischen Spalten sein, die TRUE Elemente haben, wenn das Spaltenelement in ‚BM‘ ‚A‘ ist und "Größe" ist "C". In allen anderen Fällen wird FALSCH

Hinweis sein: Hier gehen wir davon aus, dass Na sind NA und es ist ein Tippfehler

+1

Es funktioniert gut, danke. –

Verwandte Themen