1
Ситуация:ddply применять функцию на данных по группам
Вот данные у меня есть:
> head(data1)
CHROM POS REF ALT DIFF GT
1 chr01 14653 C T 254 CT
2 chr01 14907 A G 254 AG
3 chr01 14930 A G 23 AG
4 chr01 15190 G A 260 GA
5 chr01 15211 T G 21 TG
6 chr01 16378 T C 1167 TC
> tail(data1)
154176 chrX 154901366 T A 58700 TA
154177 chrX 154901404 A T 38 AT
154178 chrX 154933406 A G 32002 AG
154179 chrX 154933419 A T 13 AT
154180 chrX 154933451 T C 32 TC
154181 chrX 154933473 G T 22 GT
- CHROM имеет категорическое значение от chr01 до chr22 плюс chrX (всего 23)
- GT категоричен (сочетание двух из ACGT) (в общей сложности 12 возможностей)
Что я хочу сделать:
- Group POS по 1e7. Я сделал это с помощью data1 $ POSgroup < - пол (data1 $ POS/1e7)
- вычислить среднее значение для каждого POSgroup и CHROM группы. Поэтому у меня должно быть общее количество значений #POSgroup * # CHROM в качестве набора данных.
Код, который у меня есть, теперь может получать только среднее значение, сгруппированное группой POS, но не группой CHROM.
Код:
datsum <- ddply(data1, .var = "POSgroup", .fun = function(x) {
# Calculate the mean DIFF value for each GT group in this POSgroup
meandiff <- ddply(x, .var = "GT", .fun = summarise, ymean = mean(DIFF))
# Add the center of the POSgroup range as the x position
meandiff$center <- (x$POSgroup[1] * 1e7) + 0.5e7
# Return the results
meandiff
})
Может кто-нибудь помочь мне с этим?
Это работает. У меня есть дополнительный вопрос. Не могли бы вы взглянуть на этот пост? http://stackoverflow.com/questions/21532790/r-ggplot-separate-mean-by-range-of-x-value/21536008?noredirect1_comment32522803_21536008 и рассмотрите решение, данное Мэттом Паркером. Я попытался вписаться в это решение, но не смог, не могли бы вы это понять? Спасибо. Этот сюжет - именно то, что я хотел, просто группа chr *, как сюжет в: http: //stackoverflow.com/questions/21489385/r-running-average-for-non-time-data. Спасибо! –
@YilunZhang Я предлагаю добавить еще один вопрос, где вы объясните, что вы хотите, что вы пробовали и что не сработало – eddi
Привет, я проработал! Спасибо, в любом случае! –