Wprowadzenie
próbuję replikować w R wykres rozrzutu szeregów czasowych Mam utworzoną w Stata na podzbiór danych. Na wykresie rozrzutu znajduje się zmienna czasowa "data" na osi X (mm/dd/rrrr) oraz zmienna całkowita "koszt" na osi y (kwota pieniężna, w USD). Znaczniki znaczników są zmienną kategoryczną "nazwa firmy".Od Stata R: tworzenie rozrzutu z datą pionowych linii na podzbiorze
Rzeczywisty zestaw danych jest bardzo duży, ale próba wygląda następująco (patrz kod R poniżej), z obserwacjami (tj. Wierszami) wskazującymi transakcje (kolumna 1), a następnie zmiennymi wskazującymi datę transakcji (kolumna 2), koszt transakcji (kolumna 3) oraz nazwę firmy, która zainicjowała transakcję (kolumna 4).
#Sample Data Frame (R Code)
transactionID <- c(1, 2, 3, 4)
date <- as.Date(c("2006-08-06", "2008-07-30", "2009-04-16", "2013-02-05"))
cost <- as.integer(c(1208, 23820, 402, 89943))
company <- c("ACo", "BInc", "CInd", "DOp")
thedata <- data.frame(transactionID, date, cost, company)
Robi to w Stata
wykresie rozrzutu Chcę będą mieć „data” na osi x i „koszt” na osi y, „Spółka” wymieniony jako etykiet markerów oraz będzie mają również 3 pionowe linie o różnym formatowaniu, które oznaczają ważne wydarzenia. Kroki do produkcji to w Stata są
- zidentyfikować punkty oś X dla linii pionowych w dniach 10 września 2007, 28 stycznia 2008 roku, 18 stycznia 2012, a 05 lutego 2013 r
MDR wyświetlacz (9,10,2007)
wyświetlacz MDR (1, 28, 2008)
wyświetlacz MDR (2, 5, 2013)
Trzy powyższe komendy wyświetlają wartości 17419, 17559, 19394, które są odczytywane wewnętrznie przez Statę, a które są osadzone w poniższym kodzie w celu wykreślenia wykresu rozrzutu.
- Utwórz wykres rozproszenia, dodając trzy pionowe linie z kroku 1, formatując je jako przerywane, przerywane i ciągłe linie w kolorach czerwonym, niebieskim i zielonym o różnych grubościach z „koszt” na osi y, „data” na osi x, a „Spółka” nazwy jako etykiety markera, bo tylko tych transakcji, które były mniejsze lub równe $ +3.000:
wykres data rozrzucenia twoway koszt, jeśli koszt < = 3000, mlabel (firma) xline (17419, lpatt (kropka) lwidth (gruby) lcol (czerwony)) xline (17559, lpatt (kreska) lwidth (medthick) lcol (niebieski)) xline (19394, lpatt (lite) lwidth (cienki) lcol (zielony))
Problemy robi to w R
Kiedy próbowałem powtórzyć go w RI napotkało następujące problemy
- nie może dowiedzieć się, jak dodać pionowe linie na tych konkretnych dat, ani jak zmienić format ich rozmiaru?
- Oś Y ("koszt") zapisana jest w notacji naukowej (np. 2e + 05) zamiast zwykłych liczb (to jest 200 000)
- Nie do końca rozumiem podzestawy w R; w Stata mogę z łatwością dodawać kwalifikatory "if" do badania określonych podzbiorów danych (np."jeśli koszt> 3000 & transactionID < 5"), a następnie łatwo modyfikować je, aby ponownie uruchomić analizy lub wykreślić wykresy na innych różnych podzbiorach. Ale w R wydaje się, że są dodatkowe kroki, w których trzeba najpierw dokonać podzbioru danych i zapisać go jako nowy obiekt, a następnie uruchomić analizę tego obiektu. Czy to prawda? Widzę w tym pewne korzyści, ale także pewne wady (na przykład setki różnych obiektów zaśmiecających środowisko pracy podczas eksploracji danych, na przykład).
Do tej pory przygotowałem następujący kod. Początkowo próbowałem to zrobić za pomocą podstawowych poleceń instalacji R plot plot() i text(), ale wydaje się, że nie można tego zrobić w bazie R. Więc spróbowałem użyć pakietu ggplot2, ale wciąż nie mogę tego zrozumieć mógłbym w Stata:
library(ggplot2)
ggplot(thedata, aes(date, cost)) +
geom_text(label = thedata$company, color="blue", vjust = 0) +
geom_vline(xintercept = as.numeric(thedata$date[
c(I don't know what goes here, or here)]),
linetype="dotted", color="red")
jak widać, nie mogę dowiedzieć się, jak współrzędne dla xintercept prac poleceń geom_vline (i nie można go znaleźć w oficjalnym pliku pomocy), szczególnie kiedy chcę mają być datami (szczególnie datami, które mogą lub nie muszą być w ramce danych), ani nie mogę wymyślić, jak zmienić grubość linii.
To pytanie jest zbyt długa. W każdym razie pomocne byłoby zdjęcie twojego wykresu danych. I mylisz się w przekonaniu, że musisz przechowywać podzbiory jako nowe obiekty. Możesz łatwo zrobić coś takiego jak 'someFunction (yourData [subsettingCondition,])'. – Roland
W Stata można oceniać daty w linii: możesz mieć '' xline ('= mdy (9,10,2007) ', lpatt (kropka) lwidth (gruby) lcol (czerwony))' 'itd., Osadzone w kodzie 'graph'. –