W jaki sposób można utworzyć zestaw danych SAS z innego zestawu danych przy użyciu tylko ostatnich n obserwacji z oryginalnego zestawu danych. Jest to łatwe, gdy znasz wartość n. Jeśli nie wiem "n", jak to zrobić?SAS - Jak uzyskać ostatnie "n" obserwacji z zestawu danych?
Odpowiedz
Zakłada to, że posiadasz zmienną makro, która określa, ile obserwacji chcesz wykonać. NOBS informuje cię o liczbie obserwacji w zbiorze danych bez czytania całej treści.
%let obswant=5;
data want;
set sashelp.class nobs=obscount;
if _n_ gt (obscount-&obswant.);
run;
Korzystanie przykład Joe zmiennej makro, aby określić liczbę obserwacji chcesz, tutaj jest inna odpowiedź:
%let obswant = 10;
data want;
do _i_=nobs-(&obswant-1) to nobs;
set have point=_i_ nobs=nobs;
output;
end;
stop; /* Needed to stop data step */
run;
ten powinien wykonać lepiej, gdyż tylko czyta konkretne obserwacje chcesz.
Jestem ciekawy warunków, w których "to powinno działać lepiej". Podejrzewam, że niektóre z nich; dostęp losowy nie jest tak szybki, jak dostęp sekwencyjny, więc istnieje pewna strata. Może przetestować, jeśli mam trochę czasu. Podejrzewam, że jeśli korzystasz z większości obserwacji, że będzie to szybsze, wykonaj to sekwencyjnie, ale jeśli jest to duży zbiór danych i chcesz niewielkiej liczby obserwacji, to szybciej to zrobić losowo = dostęp. Chciałbym, żeby SAS miał sposób na otwarcie zestawu danych w odwrotnej kolejności, bez konieczności uprzedniego sortowania. – Joe
@Joe Wyobraź sobie zbiór danych z 1 milionem obs, a chcesz "ostatni" 10. Korzystając z tej techniki, wykonywanych jest tylko 10 operacji "wprowadzania". Używanie tylko wartości NOBS wymaga 1 miliona operacji "wprowadzania". W zależności od tego, jak "szeroki" jest zbiór danych, różnica ta może być bardzo znacząca. – BellevueBob
Racja, na pewno widzę, że jest to szybsze. Jestem ciekawy, w którym momencie jest on szybszy/wolniejszy (tj. Jaki rozmiar zbioru danych, jaki% danych jest pobierany - 10 z 1MM oczywiście byłoby szybsze, ale co z 500k od 1MM?) – Joe
Dla odmiany, oto kolejny podejście (niekoniecznie lepszego)
%let obswant=5;
proc sql noprint;
select nlobs-&obswant.+1 into :obscalc
from dictionary.tables
where libname='SASHELP' and upcase(memname)='CLASS';
quit;
data want;
set sashelp.class (firstobs=&obscalc.);
run;
Uwaga: chcesz określić formatuj, gdy używasz select..into, w przeciwnym razie wartość jest sformatowana jako BEST8., co prowadzi do dziwnych błędów po wybraniu wartości> = 100 000 000 (jest sformatowany w notacji wykładniczej, co prowadzi do zaokrąglenia). – Nickolay
Jeśli zestaw danych jest duża, możesz nie chcieć, aby przeczytać cały zestaw danych. Zamiast tego możesz wypróbować konstrukcję, która najpierw odczyta całkowitą liczbę obserwacji w zbiorze danych. Więc jeśli chcesz mieć ostatnie spostrzeżenia:
data t;
input x;
datalines;
1
2
3
4
;
%let dsid=%sysfunc(open(t));
%let num=%sysfunc(attrn(&dsid,nlobs));
%let rc=%sysfunc(close(&dsid));
%let number = 2;
data tt;
set t (firstobs = %eval(&num.-&number.+1));
run;
- 1. Jak wydrukować ostatnią obserwację zestawu danych SAS?
- 2. Sortowanie prawie posortowanego zestawu danych w SAS
- 3. Otwieranie zestawów danych SAS do przeglądania z poziomu programu .sas
- 4. Jak zdobyć ostatnie N dokumentów z mongoidem?
- 5. Jak usunąć ostatnie n znaków z ciągu?
- 6. Czy zastąpienie istniejącego zestawu danych SAS zajęło więcej czasu?
- 7. Czy można wybrać ostatnie n pozycji z n-dzieckiem?
- 8. Jak znaleźć ostatnie wystąpienie zestawu znaków z ciągu znaków
- 9. pobierz ostatnie n wierszy z wyjścia konsoli
- 10. Subversion dumping ostatnie `n` wersje
- 11. Jak odczytać ostatnie "n" wiersze pliku logu
- 12. SAS mogę wykonać obserwacje procesowe sas do tyłu
- 13. Jak powtórzyć ostatnie n zmian w Vimie?
- 14. Skrót R, aby uzyskać ostatnie n wpisów w wektorze
- 15. komunikacja z zestawami danych SAS z R
- 16. Jak programowo uzyskać opcję kodowania SAS?
- 17. uzyskać numer wiersza w kroku danych za pomocą sas
- 18. Git rebase interactive ostatnie n commit
- 19. Lista tylko nazwy kolumn zestawu danych
- 20. Szyny 3- Pobierz ostatnie N rekordów
- 21. Jak usunąć grupy obserwacji z dplyr :: filtrem()
- 22. Jak uzyskać listę z zestawu i komparatora
- 23. dokumentowanie zestawu danych z roxygen2
- 24. Jak uzyskać N-ty typ z krotki?
- 25. Usuń ostatnie n pozycji z listy przy użyciu C#
- 26. Jak uzyskać pierwsze n znaków w pliku danych unixowych
- 27. Montowanie zestawu danych z AWS
- 28. Elixir: Jak zdobyć ostatnie n pozycji na liście?
- 29. Automatyczne generowanie adnotacji danych z nazw pól obserwacji wielbłądów
- 30. Jak utworzyć kolumnę, która wskazuje opóźnienie obserwacji z innej obserwacji w R?
Co masz na myśli mówiąc "nie"? Jak poznasz wartość "n" - czy jest to zmienna zbioru danych, zmienna makro, parametr? – Joe