Problema
Sto facendo un sacco di ricerche su una lunga lista di aziende e voglio sapere quali sono i loro siti web. Un buon indicatore che un'azienda è stata acquisita è che manca il sito Web o che il sito Web di Compay punta a un'azienda con un nome diverso.
Quindi voglio prendere una colonna di nomi di società, inviarli a una ricerca sul Web e recuperare il sito più probabile. Sto bene con il re imperativo imperfetto, ma è molto meglio della ricerca manuale di ognuno.
Soluzione
Sto iniziando con una colonna denominata "Aziende" nella mia tabella JMP. Ottengo i valori come un elenco e quindi scorrere l'elenco con una ricerca. Sto catturando il risultato della r in un nuovo elenco e, una volta completata la ricerca, utilizzo Set values per fare in modo che i valori vengano aggiunti a una colonna vuota nella tabella originale.
Potrebbe essere possibile farlo tutto in JMP, ma non sapevo come. Tuttavia so come correre
Ho iniziato con il loro esempio, che richiede un paio di pacchetti: beautifulsoup4 e google (ovvero pip install google). Questo codice restituisce un risultato di ricerca.
(This is Python)
try:
from google import search
except ImportError:
print("No module named 'google' found")
# to search
query = "SAS Institute inc"
for j in search(query, tld="co.in", num=1, stop=1, pause=2):
print(j)
Quindi ho appena avvolto il codice Python in una piccola JSL per gestire la lista, iterando attraverso la ricerca e i risultati.
names default to here(1);
outlist={}; clist=:Company<<GET values=""></GET>
L'unico vero trucco da tenere d'occhio è che l'intero testo del codice Python si trova nella funzione Sostituto. Nel sostituto, "xyzxyz" viene rimosso e sostituito con il valore della colonna. Nelle future versioni di JMP (come v14) ci saranno alcuni modi migliori per gestire variabili e lavorare con python, ma qui sto scrivendo un file di testo, il codice python su disco e poi eseguendo il programma python.
Il programma torna con un valore che aggiungo a una lista. Viene inserito il nome di una società e ne viene estratto uno. Poiché si tratta di un 1: 1, posso semplicemente mettere la lista in una colonna e tutto dovrebbe essere allineato. Alcuni dei miei risultati restituiti avevano bisogno di lavoro, ma la maggior parte è risultata perfetta.
Discussione
Sono quasi sicuro al 100% che ci siano soluzioni migliori per questo, ma ci sono voluti circa 15 minuti per assemblare e, dopo aver corso per 10 minuti, ho avuto una lista di circa il 99%. Quindi, hai qualcosa di meglio che quello che ho, per favore, per favore pubblicalo. La flessibilità di andare avanti e indietro tra JMP e altri pacchetti e di utilizzare altri strumenti con JMP rende il lavoro molto più semplice. Nel mio esempio ho avuto circa 600 nomi da elaborare. Il tedio di copia-incolla poteva avere droga per ore, ma con questo ho fatto tutto il lavoro e ancora avuto il tempo di blog su di esso in meno tempo che mi avrebbe portato a farlo manualmente. Inoltre, domani ricevo la seconda metà dell'elenco. Posso solo eseguire di nuovo lo script.
@Craige_Hales , Grazie,... (oops !, il programma esegue un copia-incolla dal tuo post?)
Bella demo di RunProgram!