2015-01-26 1 views
-2

Я хочу использовать R для выборки моего фреймворка. Мои данные - это временные эпидемиологические данные, и я хочу случайным образом отбирать по меньшей мере 1 и до 10 записей за каждый год, предпочтительно таким образом, который масштабируется до количества записей за каждый год. Я хотел бы экспортировать результаты в виде csv.Я хочу использовать R для выборки моего временного фрейма данных

вот несколько строк моего набора данных, где я оставил длинное поле генетической последовательности для каждой записи.

year matrix USD clade 
1958 W mG018U UP 
1958 W mG018U UP 
1958 W mG018U UP 
1966 UN mG140L LL 
1969 UN mG207L LL 
1969 UN mG013L LL 
1971 UN mG208L LL 
1972 HA mG129M MN 
1973 C1 mG018U UP 
1973 NA mG001U UC 
1973 NA mG001U UC 

все, что я научился делать это

sample(mydata, size = 600, replace = FALSE) 

, который, конечно, не брать во внимание год.

+2

Пожалуйста, покажите несколько строк вашего набора данных. – akrun

+4

Просьба представить примерный кадр данных и некоторые примеры желаемого результата, чтобы люди могли вам помочь. http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – keegan

+1

Каков ваш вопрос? – Bonifacio2

ответ

1

Есть много возможностей для запуска sample для каждой группы (например, sample_n в dplyr пакете), вот иллюстрация использования data.table пакета.

Вы можете указать долю, скажем, 0.1, количества записей, которые вы хотите отбирать из каждого года, чтобы размер был относительным, заверните его в ceiling, если эта доля меньше 1, и ограничивать максимум 10 на группу, используя функцию min, например

library(data.table) 
setDT(df)[, .SD[sample(.N, min(10, ceiling(.N*.1)))], year] 
# year matrix USD clade 
#1: 1958  W mG018U UP 
#2: 1966  UN mG140L LL 
#3: 1969  UN mG013L LL 
#4: 1971  UN mG208L LL 
#5: 1972  HA mG129M MN 
#6: 1973  NA mG001U UC 
+0

спасибо Дэвид, я пытаюсь разобрать ваше предложение сейчас. Моя версия R (3.0.2) не имеет пакета data.table, хотя? – user21068

+0

что означает .N означает? это то, что я нацелен на 0.1 фракцию? – user21068

+0

'данные.таблица' - это упаковка. Вам нужно сначала установить его, используя 'install.packages (" data.table ")' и только затем запустите указанный выше код. '.N 'обозначает количество наблюдений, которые у вас есть в каждой группе, см.'? Data.table'. –

Смежные вопросы