我有df
12 列:
df<-read.table(header=T,text="V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12
A01 10378809 10379882 Contig1401|m.3412 101 - 10378809 10379882 255,0,0 1 1073 0
A01 10469105 10469293 Contig1755|m.4465 48 + 10469105 10469293 255,0,0 2 188 0
A01 10469429 10469630 Contig1755|m.4465 5 + 10469429 10469630 255,0,0 NA 201 0")
首先,我想按 contig 对它们进行分组,然后为第 12 列生成以下值。我想出了如何做到这一点,dplyr
但我有一些错误。
as.data.frame(df %.% group_by(V4) %.% summarise(V12=apply(df[2], 2, function(x)x-x[1])))
错误:
Error in summarise_impl(.data, named_dots(...), environment()) :
attempt to use zero-length variable name
.
对于每个组,我想从第二列的第一个值中减去第二个值。如果只有 2 行(最大-最小),我可以轻松做到这一点,但如果超过 2 行,我会错过中间行。
所以我想我会写一个函数并插入,dplyr
但似乎我不能将我自己的函数与dplyr
.
这是我需要的最终输出:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12
1 A01 10378809 10379882 Contig1401|m.3412 101 - 10378809 10379882 255,0,0 1 1073 0
2 A01 10469105 10469293 Contig1755|m.4465 48 + 10469105 10469293 255,0,0 2 188 0
3 A01 10469429 10469630 Contig1755|m.4465 5 + 10469429 10469630 255,0,0 NA 201 324