我如何使用dplyr包实现这一点
我有我如何使用dplyr包实现这一点,r,apply,dplyr,R,Apply,Dplyr,我有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
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")
错误:
摘要\u impl(.data,命名为\u dots(…),environment())中出错:
尝试使用零长度变量名
对于每个组,我想从第二列的第一个值中减去第二个值。如果只有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
我想你在找这个:
library(dplyr)
df %.%
group_by(V4) %.%
mutate(V12 = V2 - V2[1])
在代码中,从所有值中减去第一个值,而不仅仅是从第二个值中减去。你的例子的预期结果是什么?可能是我错了。但是我想从每个唯一的V4列的第一个值中减去第二个值。如果有两个,我可以很容易做到,但如果有多个,我就做不到。我编辑了我的问题以包含预期的输出。谢谢,谢谢。成功了。使用dplyr的简单方法。谢谢Upendray您也可以使用
first(V2)
。这里没有优势,但在其他情况下,定义“第一”的含义可能很有用
library(dplyr)
df %.%
group_by(V4) %.%
mutate(V12 = V2 - V2[1])