【发布时间】:2017-09-08 01:54:14
【问题描述】:
情况:
这是我拥有的数据:
> 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 是分类的(A C G T 的两个组合)(总共 12 种可能性)
我想做的事:
- 按 1e7 分组 POS。我已经使用 data1$POSgroup
- 计算每个 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
})
谁能帮我解决这个问题?
【问题讨论】: