Szukałem wyczerpująco dla bezpośredniego tłumaczenia R dla FIRST. i ostatni. wskaźniki w krokach SAS DATA, ale nie mogą go znaleźć. Dla tych, którzy nie znają SAS, FIRST. jest boolowskim, który identyfikuje pierwszy wygląd danego elementu w tabeli i OSTATNIE. jest wartością logiczną, która identyfikuje ostatni wygląd. Na przykład, rozważmy następujący posortowaną tablicę:Jak mogę znaleźć pierwsze i ostatnie wystąpienia elementu w data.frame?
V1 V2 V3
1 1 1
1 1 2
1 2 3
1 2 4
2 3 5
2 3 6
2 4 7
2 4 8
3 5 9
3 5 10
3 6 11
3 6 12
Ponieważ SAS kroki odczytać dane tabel linia po linii, mogę użyć instrukcji jak:
IF FIRST.V1 THEN DO ...
FIRST.V1 zwróci TRUE tylko wtedy, gdy po raz pierwszy zaobserwowano w V1. Innymi słowy, zwróci true dla V1 [1] (pierwsze pojawienie się "1"), V1 [5] (pierwsze pojawienie się "2") i V1 [9] (pierwsze pojawienie się "3"). Ostatni. wskaźnik działa w analogiczny sposób, ale z końcowym wyglądem tego elementu.
Czy jest coś w R, które emuluje to?
Może 'powielane()'? Ale trudno powiedzieć, bo tak naprawdę nie powiedziałeś nam, jaki masz cel. – joran
może być więcej R-ish rozwiązanie (np. Z 'ddply') zamiast pętli przez zestaw danych linii na raz ... –
Nie chcę faktycznie pętli przez dane.frame linia po linii. Chcę tylko funkcję, która zwróci true, jeśli jest to pierwszy występ wartości w tej kolumnie i false w przeciwnym razie. Także ten, który zwraca true tylko wtedy, gdy jest ostatnim pojawieniem się wartości, a false w przeciwnym wypadku. Rozwiązanie firmy Spacedman poniżej jest więcej niż wystarczające do tych celów. – asteri