URL을 통해 사용할 수 있는 데이터를 다운로드해야 합니다.
http://www.arpalazio.net/main/aria/sci/basedati/chimici/BDchimici/RM/MedieGiornaliere/RM_PM2.5_ 2019년 _gg.txt
다른 연도의 데이터를 다운로드하려면 다음과 같이 URL의 연도를 변경해야 합니다. 빨간색 . 1990년부터 2021년까지 실행되는 루프를 JSL로 작성하고 데이터를 테이블에 넣고 싶습니다. 저는 JSL을 처음 사용하므로 이에 대한 도움을 주시면 감사하겠습니다.
이를 위해서는 루프(for-loop), URL을 빌드하는 방법(평가 삽입), URL에서 데이터를 로드하는 방법(올바른 인수로 열기) 및 데이터를 결합하는 방법(연결)이 필요합니다.
Names Default To Here(1);
//We can use Eval Insert to replace ^temp_year^ in the string
dl_url = "http://www.arpalazio.net/main/aria/sci/basedati/chimici/BDchimici/RM/MedieGiornaliere/RM_PM2.5_^temp_year^_gg.txt";
dt = New Table(); //table to collect results
//for-loop
For(i = 1990, i <= 2021, i++,
temp_year= Char(i);
year_url = Eval Insert(dl_url);
//downloaded first one file by hand -> opened in JMP to get Open with correct parameters and replaced file path with URL
Try(
dt_temp = Open(
year_url,
Import Settings(
End Of Line(CRLF, CR, LF),
End Of Field(Spaces, Space, CSV(0)),
Strip Quotes(1),
Use Apostrophe as Quotation Mark(0),
Use Regional Settings(0),
Scan Whole File(1),
Treat empty columns as numeric(0),
CompressNumericColumns(0),
CompressCharacterColumns(0),
CompressAllowListCheck(0),
Labels(1),
Column Names Start(1),
Data Starts(2),
Lines To Read("All"),
Year Rule("20xx")
)
);
dt << Concatenate(dt_temp, Append to first table(1));
Close(dt_temp, no save);
,
Show(exception_msg)
);
);
연결은 누락된 값을 생성하여 누락된 열을 처리할 수 있어야 하며 Try는 존재하지 않는 URL을 처리하는 매우 쉬운 방법입니다(약간 게으름).
정말 감사합니다 @jthi .이것은 매우 도움이 됩니다.
후속 질문이 있는데 도와주실 수 있는지 궁금합니다. 거의 동일한 방법(예: URL의 연도 값 변경)으로 데이터를 다운로드해야 하는 다른 데이터베이스가 있습니다. URL은 다음과 같습니다.
https://www.arb.ca.gov/aqmis2/pickdl_hrly.php?param=OZONE&units=007&year=2021&county_name=--COUNTY--&basin=SC-South+Coast&latitude=--PART+OF+STATE--&report= PICKDATA&order=basin%2Ccounty_name%2Cs.name&submit=Retrieve+Data&ptype=aqd&std15=&o3switch=new&hours=all&statistic=&qselect=Screened&start_mon=1&start_day=1&mon=12&day=31&submit=All+29s
유일한 차이점은 이 URL에서 데이터를 가져오려면 해당 페이지에서 "데이터 가져오기" 버튼을 클릭해야 한다는 것입니다. JSL을 통해 이를 수행할 수 있는 방법이 있습니까?
내가 아는 한 JMP로 웹 사이트의 요소를 클릭할 수 없지만 HTTP 요청을 사용하여 데이터를 가져올 수 있습니다. 이를 위해서는 요청이 어떻게 수행되는지 파악해야 합니다(브라우저의 개발자 도구가 도움이 될 수 있음).