2016-11-08 6 views
0

Ich bin auf der Suche nach einem Muster basierend auf einigen Spalten eines Datenrahmens zu generieren. Beispieldatensatz könnte lauten:Mustergenerierung basierend auf Datenrahmen in R

domain <- c('ebay.com','facebook.com','auto.com') 
id <- c(21000, 23400, 26800) 
cost <- c(0.82,0.40,0.57) 
rand_val <- c(0000807,0000808,0000809) 
test_data <- data.frame(domain,id,cost,rand_val) 

Basierend auf Spalten von test_data ich suche dieses Muster als Textausgabe zu generieren:

if every domain = "ebay.com", id in (21000): 
    rand_val:0000807 
cost: 0.82 
elif every domain = "facebook.com", id in (23400): 
    rand_val:0000808 
cost: 0.40 
elif every domain = "auto.com", id in (26800): 
    rand_val:0000809 
cost: 0.57 

Wie kann ich basierend auf der Anzahl der Zeilen in dem Datenrahmen iterieren um dieses Muster zu erzeugen.

Antwort

1

können Sie verwenden paste mit sep und collapse dafür:

res <- paste('if every domain = "',test_data$domain, '", id in (', test_data$id, '): 
    rand_val:', test_data$rand_val, ' 
cost: ', test_data$cost, sep="", collapse = " 
el") 
cat(res) 

if every domain = "ebay.com", id in (21000): 
    rand_val:807 
cost: 0.82 
elif every domain = "facebook.com", id in (23400): 
    rand_val:808 
cost: 0.4 
elif every domain = "auto.com", id in (26800): 
    rand_val:809 
cost: 0.57 
+0

'wenn jede domain = \ "ebay.com \", id in (21000): \ n rand_val: 807 \ nCost: 0,82 \ nelif jede Domäne = \ "facebook.com \", id in (23400): \ n rand_val: 808 \ nKosten: 0.4 \ nelif jede Domäne = \ "auto.com \", ID in (26800): \ n rand_val: 809 \ nKosten: 0.57' Dies ist, was ich Ihre Eingabe basiert, so dass ich a \ n anstelle einer neuen Zeile, und auch dies: \ "ebay.com \", \ "facebook.com \" als Domänen. Können Sie Ihren Code optimieren, um das gewünschte Ergebnis zu erzielen? – PSraj

+0

Ja, das funktioniert perfekt, Danke. Allerdings habe ich gesehen, dass wir auch die Funktion cat() verwenden können, die dasselbe Ergebnis liefert. "Cat (einfügen ('if all domain ="', test_data $ domain, '', id in (', test_data $ id,') : \ nrand_val: ', test_data $ rand_val,' \ ncost: ', test_data $ kosten, sep = "", collapse = " el")) '. Wie auch immer, danke für die Hilfe. – PSraj

+0

Du hast recht, schreibe eigentlich 'cat' – HubertL

Verwandte Themen