我有一个数据帧,其中包含针对不同SNP窗口的Fst值。
我想总结每个基因窗口的Fst值的平均值和中值:
gene chr start Nsites Fst01 Fst02 Fst12
1 AC002310.7 16 30591000 2 1 8. 5
2 ZNF785 16 30591000 2 1 30 1
3 AC002310.7 16 30593000 2 2 4. 10
4 ZNF785 16 30593000 2 3 20. 2
5 AC002310.7 16 30595000 2 3 2. 20
6 ZNF785 16 30595000 2 6. 10. 3
输出:
gene n Fst01 Fst02 Fst12
1 AC002310.7 3 2. 4. 10
2 ZNF785 3 3. 20 2
我写了这样的东西:
df %>% summarise_at(group_by(df, gene), vars(Fst01, Fst02,Fst12), funs(n(),mean))
但是它给了我以下错误:
Error: `.vars` must be a character/numeric vector or a `vars()` object, not list
Call `rlang::last_error()` to see a backtrace
任何帮助,万分感谢,欢呼
答案 0 :(得分:1)
使用管道时,左侧的对象作为第一个参数传递给右侧的函数,因此您可以这样做:
df %>% group_by(gene) %>% summarise_at(vars(Fst01, Fst02,Fst12), funs(n(),mean))
通过这种方式,group_by
的第一个参数是df
,summarise_at
的第一个参数是df
,按gene
分组