2012-12-29 28 views
11

Używam RStudio, R Markdown, Latex i Pandoc do czyszczenia danych, konstruowania zmiennych, uruchamiania mojej analizy i raportowania wyników. Jestem nowy w koncepcji powtarzalnych badań, ale jestem uzależniony. Ma wiele sensu.zautomatyzowany tekst do powtarzalnych badań

Dynamiczne tabele i rysunki nie stanowią problemu. Jednak tekst dynamiczny mnie zbija. Mogę wstawić kod inline, aby powiedzieć, że 95% wszystkich statystyk jest fałszywych, ale nie jestem pewien, jak mogę zmienić mój język w powtarzalny sposób.

Na przykład, jeśli mam obiekt x = 0,66 i chcę napisać "2 na 3 dentystów używają Crest"? Mogę spojrzeć na bieżącą wartość x, 0,66 i wpisać "2 z 3" w tekście, ale nie można tego powtórzyć. Załóżmy, że otrzymuję nowe dane i ponownie uruchomię analizę, a x zmienia się na 0,52. Mój tekst byłby nieaktualny. Jasne, mogłem dynamicznie poinformować, że 52% dentystów woli Crest, ale raport staje się nieaktualny, gdy wszystko jest zgłaszane jako procent.

Myślałem, że mogę tworzyć funkcje, które mogę wywoływać w tekście, gdy chcę zmienić pisanie. Na przykład, funkcja „out.of” może pracować jeśli else produkować tekst:

ifelse(x < 0.09,"fewer than 1 out of 10", 
ifelse(x >= 0.09) & x < 0.11,"roughly 1 out of 10", 
ifelse(x >= 0.11 & x < 0.15,"slightly more than 1 out of 10", 
ifelse(x >= 0.15 & x < 0.19,"nearly 2 out of 5", 
ifelse(x >= 0.19 & x < 0.21,"roughly 2 out of 5", 
... 
ifelse(x >= 0.95 & x < 0.99,"nearly all", 
ifelse(x >= 0.99,"all","fubar"))...) 

mogę również utworzyć funkcję frakcji że zrobi coś podobnego do jednej dziesiątej, dwóch piątych, jeden -Trzeci ...

Jestem pewien, że inni już poradzili sobie z tym problemem. Jakieś szanse? Pomysły?

+0

To naprawdę ciekawe pytanie, ale myślę, że naprawdę zależałoby od tego, jakie są ograniczenia dotyczące czytelności. Czy na przykład uważasz, że "1 na 20" lub "1 na 25" to ważne opcje? Jaki próg chcesz ustawić dla bardziej ogólnych przerw (np. "2 na 5")? Kiedy już to zrobisz, sugerowałbym wypróbowanie 'cut()' i określenie etykiet zamiast 'ifelse()'. Nie sądzę, że któryś z pakietów zrobi to za ciebie, ale oni powinni ci pomóc w dotarciu do celu! – A5C1D2H2I1M1N2O1R2T1

+0

Jeśli chodzi o reprezentowanie wartości procentowych, myślę, że "na 10" jest najniższym, jaki chciałbym wybrać. Nauczyłem się tony R w tym roku (od linii zerowej), ale nie cut(). Zajrzę do tego. Dzięki. –

+0

Więc musisz dowiedzieć się, jakie kategorie "z" są najbardziej przydatne. Kategorie takie jak "out of {9, 8, 7, 6}" mogą nie być zbyt przyjazne dla użytkownika, ponieważ będzie to opodatkowało niektórych czytelników, którzy starają się przekonwertować te liczby z powrotem na procent. Powodzenia! – A5C1D2H2I1M1N2O1R2T1

Odpowiedz

7

Istnieje pakiet FRACTION i po zastąpieniu/"z" może to działać. Jednak wyjście przy użyciu liczby miejsc po przecinku jest dziwne:

library(FRACTION) 
fra(0.66,j=2) 
# [1] "33/50" 
fra(0.66,j=1) 
#"7/1e+08" 

Edycja przez @Dieter Menne: zapomnieć o tym, zobacz @Ben Bolker poniżej.

+5

możesz być w stanie obejść to z 'MASS :: fractions':' fractions (0.66, cycles = 3) '(i' MASS' jest już zalecane) –

+0

Krr .... Powinienem był wiedzieć, ale po prostu mógłbym nie pamiętam, gdzie go znaleźć. –

+0

świetny, @BenBolker –