我有一个包含12列的df
:
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
。
对于每个组,我想要从第二列的第一个值中减去第二列的第二个值。如果只有两行则很容易实现这个功能(最大值-最小值),但是如果超过两行时,我将会忽略了中间的行。
所以我想编写一个函数并将其插入到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