我有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