我有df
有12列:我怎样才能做到这一点与dplyr包
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")
首先,我想通过重叠群组他们,然后生成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行(max-min),我可以很容易地做到这一点,但如果超过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
在代码中,你从所有值减去第一个值,不仅从第二。你的例子的预期结果是什么? –
可能是我错了。但我想减去每个唯一V4列的第一个值的第二个值。如果有两个,我可以很容易地做到这一点,但如果有多个,我可以做到这一点。我编辑了我的问题以包括预期的输出。谢谢 – upendra