Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何使用dplyr包实现这一点_R_Apply_Dplyr - Fatal编程技术网

我如何使用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])