2017-02-07 3 views
1

Hier ist ein kleines Beispiel für die XML-Datei, mit der ich arbeite. Ich möchte die Anzahl der Auktionen ermitteln, die eine Verkäuferbewertung von mehr als 150 haben. Weiß jemand, wie ich das mache?Extrahieren mehrerer Werte aus XML-Datei mit R

<root> 
     <listing> 
      <seller_info> 
       <seller_name>seller12</seller_name> 
       <seller_rating>100</seller_rating> 
      </seller_info> 
      <payment_types> 
       Visa 
      </payment_types> 
      <shipping_info> 
       Buyer pays shipping charges. 
      </shipping_info> 
      <buyer_protection_info></buyer_protection_info> 
      <auction_info> 
       <current_bid>$820.00</current_bid> 
       <time_left>4 days, 18 hours +</time_left> 
       <high_bidder> 
        <bidder_name>[email protected]</bidder_name> 
        <bidder_rating>-2</bidder_rating> 
       </high_bidder> 
       <num_items>1</num_items> 
       <num_bids>12</num_bids> 
       <started_at>$1.00</started_at> 
       <bid_increment></bid_increment> 
       <notes></notes> 
      </auction_info> 
     </listing> 
     <listing> 
      <seller_info> 
       <seller_name>seller50</seller_name> 
       <seller_rating>200</seller_rating> 
      </seller_info> 
      <payment_types> 
       Visa 
      </payment_types> 
      <shipping_info> 
       Buyer pays shipping charges. 
      </shipping_info> 
      <buyer_protection_info></buyer_protection_info> 
      <auction_info> 
       <current_bid>$920.00</current_bid> 
       <time_left>4 days, 17 hours +</time_left> 
       <high_bidder> 
        <bidder_name>[email protected]</bidder_name> 
        <bidder_rating>-2</bidder_rating> 
       </high_bidder> 
       <num_items>1</num_items> 
       <num_bids>5</num_bids> 
       <started_at>$1.00</started_at> 
       <bid_increment></bid_increment> 
       <notes></notes> 
      </auction_info> 
     </listing> 
<root> 

Bisher habe ich diese Daten analysierte xmlTreeParse und verwenden xpathSapply mit

doc <- xmlTreeParse("ebay.xml", useInternalNodes = TRUE) 
log <- xpathSApply(doc, '//*/seller_rating') 
+0

Also, was ist das Problem mit Ihrem Code versucht? Und was ist das gewünschte Ergebnis? – Parfait

+0

@Parfait Das Problem ist, dass ich alle Auktionen mit einer Verkäuferbewertung extrahiere, nicht nur die Auktionen mit einer Verkäuferbewertung von mehr als 150. Ich möchte nur die Anzahl der Auktionen mit Verkäuferbewertungen> 150 – Amanda

Antwort

2

Ich sehe, dass Ihr Code auch den Tag erhält. Wenn Sie Folgendes verwenden:

SellerRatings = xmlSApply(doc["//listing//seller_info//seller_rating"], xmlValue) 

Sie erhalten nur die Werte, so dass Sie sie zählen können.

sum(SellerRatings > 150) 

Oder kurz

sum(xmlSApply(doc["//*//seller_rating"], xmlValue) > 150) 
+0

Thanks @ G5W ausgeben. Wenn ich Ihren Code versuche, erhalte ich diesen Fehler: 'Fehler in UseMethod (" xpathApply "): keine anwendbare Methode für 'xpathApply' angewandt auf ein Objekt der Klasse" XMLNodeSet "' – Amanda

+0

Es ist xpathSapply Es hat eine S – G5W

+0

seltsam , Verwende ich ein S. 'doc <- xmlTreeParse (" ebay.xml ", useInternalNodes = TRUE) log <- xpathSApply (doc [" // listing // seller_info // seller_rating "], xmlValue)' – Amanda