2017-03-11 4 views
0

Ich versuche, einen Weg zu finden, die folgende in RVergleich von zwei Datenrahmen basierend auf einer Säule in R

ich einen Datenrahmen haben zu programmieren, in denen ich in der Tabelle auf den niedrigsten Wachstumsraten basieren Sortierung für eine Reihe von Unternehmen

Tabelle 1

Company Growth-Dept1 
    A  5% 
    B  10% 
    C  15% 
    D  20% 

Tabelle 2

Company Growth-Dept2  
    A   2% 
    M   4% 
    D   8% 
    C   2% 

ich möchte co mpare Table2 basierend auf den Firmennamen in Tabelle 1 und erzeugt eine Table3, dass nur Namen hat zusammenpassende

Output Tabelle 3

Company Growth-Dept2 
    A  2% 
    C  2% 
    D  8% 

Benötige ich eine Schleife in diesem Fall zu benutzen? Jede andere Möglichkeit, dies zu programmieren? Ich habe etwa 800 Einträge in jeder Spalte

Antwort

0

Wie sieht das aus?

t1 <- data.frame(company=c('A','B','C','D'),growth=c(.05,.1,.15,.2)) 
t2 <- data.frame(company=c('A','M','D','C'),growth=c(.02,.04,.08,.02)) 
tcombined <- t2[which(t1$company %in% t2$company),] 
tcombined <- tcombined[order(tcombined$growth),] 
tcombined 

gibt

company growth 
1  A 0.02 
4  C 0.02 
3  D 0.08 
+0

hat eine dieser Lösungen funktioniert? Wenn ja, überlege dir bitte, eine Antwort zu akzeptieren. – Jonathan

0

Mit data.table zusammen mit scales für Prozent.

library(data.table) 
library(scales) 

dt1 <- data.table(Company=c('A','B','C','D'),growth_dep1=percent(c(.05,.1,.15,.2)), key = "Company") 
dt2 <- data.table(Company=c('A','M','D','C'),growth_dep2=percent(c(.02,.04,.08,.02)), key = "Company") 

dt1[dt2][!is.na(growth_dep1), .(Company, growth_dep2)][order(growth_dep2)] 
Verwandte Themen