Hoe te vlookup doen en vul naar beneden (zoals in Excel) in R stack overflow

Als ik uw vraag goed begrijp, hier zijn vier methoden om het equivalent van Excel VLOOKUP doen en vul beneden met R:

Hier zijn vier methoden om de HouseTypeNo de largetable met de waarden in de opzoektabel te vullen:

Eerst met samenvoegen in de basis:

Een tweede methode met de naam vectoren in de basis:

Ten derde, het gebruik van de plyr pakket:

Ten vierde, met de sqldf pakket

Als het mogelijk is dat sommige soorten huis in largetable niet bestaan ​​in lookup dan links mee zou worden gebruikt:

Overeenkomstige wijzigingen aan de andere oplossingen zou ook nodig zijn.

Is dat wat je wilde doen? Laat het me weten welke methode je wilt en ik zal commentaar toe te voegen.

een uniek nummer voor elk woningtype te geven. U kunt het resultaat te zien hier:

zodat je uiteindelijk met verschillende nummers op de rijen (omdat de factoren alfabetisch gerangschikt), maar hetzelfde patroon.

(EDIT:. De rest van de tekst in dit antwoord is eigenlijk overbodig Het kwam bij me op om te controleren en het bleek dat read.table () had al huizen $ Soort woning tot een factor als het was te lezen in het dataframe in de eerste plaats) .

U kunt echter wel beter gewoon Soort woning om te zetten in een factor, die u allemaal dezelfde voordelen als HouseTypeNo zou geven, maar zou gemakkelijker zijn te interpreteren, omdat de soorten huis, meer worden genoemd dan genummerd, bijv .:

antwoordde 8 maart ’13 om 21:30

Oplossing # 2 van @ antwoord Ben’s is niet reproduceerbaar in andere meer generieke voorbeelden. Het gebeurt om de juiste lookup te geven in het voorbeeld, omdat de unieke Soort woning in huizen worden weergegeven in oplopende volgorde. Probeer dit:

Bens oplossing # 2 geeft

wanneer het juiste antwoord is op 17 van de opzoektabel

De juiste manier om het te doen is

Nu is de lookups correct worden uitgevoerd

Ik heb geprobeerd om Bens antwoord te bewerken, maar het wordt afgewezen om redenen die ik niet kan begrijpen.

antwoordde 9 december ’13 om 19:08

De poster niet vragen rond het opzoeken van waarden als exacte = NIET WAAR. maar ik ben deze toe te voegen als een antwoord voor mijn eigen referentie en eventueel anderen.

Als je op zoek bent naar categorische waarden, gebruik maken van de andere antwoorden.

Excel VLOOKUP kunt u ook match ongeveer overeenkomen voor numerieke waarden met de 4e argument (1) wedstrijd = TRUE. Ik denk aan match = TRUE als het opzoeken van waarden op een thermometer. De standaardwaarde is false, die perfect geschikt is voor categorische waarden.

Als u wilt ongeveer overeenkomt (het uitvoeren van een lookup), R heeft een functie genaamd findInterval. die (zoals de naam al aangeeft) zal het interval / bin dat uw voortdurende numerieke waarde bevat te vinden.

Echter, laten we zeggen dat u wilt findInterval voor meerdere waarden. Je kon een lus te schrijven of een toepassing gebruiken. Echter, ik heb vond het efficiënter om een ​​DIY gevectoriseerd aanpak.

Laten we zeggen dat u een raster van waarden geïndexeerd door x en y:

en je hebt een aantal waarden die u wilt opzoeken door x en y:

Hier is de gevisualiseerde voorbeeld:

U kunt de x-intervallen en y-intervallen met dit soort formule te vinden:

Je zou het een stap verder en het uitvoeren van een (simplistisch) interpolatie over de z-waarden in het raster als volgt uit:

Die geeft je de volgende waarden:

Merk op dat ix en iy kunnen ook gevonden met een loop findInterval. bijv. hier is een voorbeeld voor de tweede rij

Welke wedstrijden ix en iy in df [2]

Voetnoot: (1) Het vierde argument van vlookup heette vroeger "bij elkaar passen", Maar nadat ze het lint geïntroduceerd werd omgedoopt tot "[Range_lookup]".

Bron: stackoverflow.com

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *