2011-09-07 7 views
8

Będąc użytkownikiem R, uczę się teraz Staty używając zasobu this i jestem zaintrygowany komendą merge.Porównanie porównania między R i Statą

W R, nie muszę się martwić o błędne połączenie danych, ponieważ i tak wszystko się zlewa. Nie muszę się martwić, jeśli wspólne kolumny zawierają jakiekolwiek duplikaty, ponieważ ramka danych Y zostanie scalona z każdym zduplikowanym wierszem w ramce danych X. (Przy użyciu all=FALSE w merge)

Ale dla Stata, muszę usunąć zduplikowane wiersze z X przed przystąpieniem do scalania.

Czy w Stacie założono, że aby kontynuować, wspólna kolumna w tabeli głównej musi być niepowtarzalna?

+0

do scalania problemów w Stacie Uważam, że [MMERGE] (http://econpapers.repec.org/software/bocbocode/s420201.htm) jest naprawdę użyteczny. – radek

+2

FYI: Począwszy od Stata 11, funkcje 'mmerge' zostały włączone do" oficjalnego "polecenia' merge'. –

Odpowiedz

6

Odpowiedź na twoje pytanie brzmi Nie. Postaram się wyjaśnić dlaczego.

Podany link obejmuje tylko jeden rodzaj scalenia, który jest możliwy ze Stata, czyli połączenie jeden-do-wielu. Możliwe są

merge 1:m varlist using filename

Inne rodzaje seryjnej:

One-to-one seryjnej na określonych kluczowych zmiennych

merge 1:1 varlist using filename

wiele-do-jednego seryjnej na określonych kluczowych zmiennych

merge m:1 varlist using filename

wiele-do-wielu scalania na określonych kluczowych zmiennych

merge m:m varlist using filename

One-to-one scalania poprzez obserwację

merge 1:1 _n using filename

szczegółowe informacje, wyjaśnienia i przykłady można znaleźć w help merge.

Jeśli nie wiem, czy obserwacje są unikalne w zbiorze danych, można wykonać następujące sprawdzenia:

bysort idvar: gen N = _N

ta N

Jeśli okaże wartości N, które są większe niż 1, wiesz, że obserwacje nie są unikalne w odniesieniu do idvara.

Jest to w rzeczywistości nowa składnia polecenia merge, która została wprowadzona w Stata 11. Przed Statą 11 polecenie scalenia było nieco prostsze. Po prostu musiałem uporządkować swoje dane, a następnie można zrobić:

merge varlist using filename

Nawiasem mówiąc, można nadal korzystać z tej starej składni w Stata 11 lub wyższym.

+2

Dobra robota z dość wyczerpującą odpowiedzią. Zwróć uwagę, że starsza składnia była prostsza, ale zmienili ją, ponieważ powodowała wszelkie trudne do wykrycia problemy, gdy dane nie były zgodne z oczekiwaniami. Używanie starej składni nadal działa, ale zwraca ostrzeżenie. –

+0

@ gsk3: Dobry komentarz. Osobiście zajęło mi trochę czasu przyjęcie nowej składni scalającej w moich programach i przypisach klasowych. Nowa składnia wygląda i jest na pierwszy rzut oka bardziej skomplikowana. Jednak szybko się to opłaci, ponieważ może zwrócić twoją uwagę na problemy z danymi. –

+2

To zasługa Staty, że zrobili coś, co sprawiło, że ich język był trudniejszy do zrozumienia na początku, ale lepiej na dłuższą metę. Zwłaszcza, że ​​większość ich klientów nie pochodzi ze środowisk programistycznych i dlatego jest mało prawdopodobne, że od razu zorientują się, jak wiele takich rzeczy (być może najbardziej zbliżonych do silnego pisania) poprawia ich życie :-) –

0

joinby, niedopasowane (oba) jest poleceniem odpowiadającym scalaniu polecenia R.

W szczególności połączenie m: m NIE powoduje wielokrotnego scalenia (tj. Pełnego sprzężenia) wbrew temu, co sugeruje dokumentacja.