Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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
R Bash—一行程序,对qvalue列上的bed文件进行排序,然后提取q值最高的行的前20%_R_Bash_Sorting_Filtering_Percentage - Fatal编程技术网

R Bash—一行程序,对qvalue列上的bed文件进行排序,然后提取q值最高的行的前20%

R Bash—一行程序,对qvalue列上的bed文件进行排序,然后提取q值最高的行的前20%,r,bash,sorting,filtering,percentage,R,Bash,Sorting,Filtering,Percentage,我有以下格式的bed文件: chr start end q-value name chr1 10004 10467 310.43 peak_1 chr2 15410 15704 19.61 peak_2 chr3 21207 21354 4.04 peak_3 chr4 26073 26165 25.32 peak_4 chr5 63044057 63044425 39.65 peak_5 如果可能的话,我需要

我有以下格式的bed文件:

chr start   end q-value   name
chr1    10004  10467    310.43    peak_1
chr2    15410  15704    19.61 peak_2
chr3    21207  21354    4.04  peak_3
chr4    26073  26165    25.32 peak_4
chr5   63044057  63044425   39.65  peak_5
如果可能的话,我需要一个bash-one行程序在q-value列(第4列)上对这个文件进行排序,然后我需要提取q-value最高的前20%行

排序后,这将看起来像:

chr start   end q-value   name
chr1    10004  10467    310.43    peak_1
chr5   63044057  63044425   39.65  peak_5
chr4   26073  26165    25.32 peak_4
chr2    15410  15704    19.61 peak_2
chr3    21207  21354    4.04  peak_3
chr1    10004  10467    310.43    peak_1
在百分比之后,它看起来像:

chr start   end q-value   name
chr1    10004  10467    310.43    peak_1
chr5   63044057  63044425   39.65  peak_5
chr4   26073  26165    25.32 peak_4
chr2    15410  15704    19.61 peak_2
chr3    21207  21354    4.04  peak_3
chr1    10004  10467    310.43    peak_1
我需要在40多个文件上运行这个

我也很熟悉R,所以如果这在bash中不可能,但在R中是可行的,那么R代码也会很有用(但bash更可取)

非常感谢


编辑评论:

使代码更易于测试

回复:我自己的尝试

当我试图在第一个实例中运行
sort-k4 file.txt
时。我得到了以下不是我想要的:

chr2    15410  15704    19.61 peak_2
chr4    26073  26165    25.32 peak_4
chr1    10004  10467    310.43    peak_1
chr5   63044057  63044425   39.65  peak_5
chr3    21207  21354    4.04  peak_3

这让我很困惑,我想小数是一个问题,不知道如何绕过第一部分。

这就是你所看到的吗

#!/bin/sh
sort -r -g -k 4,4 < inputFile.file > tempfile_sorted.out
lncnt=$(wc -l < tempfile_sorted.out)
percent_linecount_infloat=$(echo "$lncnt*.2" | bc)
float2Int=$(printf %.0f "$percent_linecount_infloat")
head_20_percent=$(head -"$float2Int" tempfile_sorted.out)
new_fn=$(printf "%s_20" tempfile_sorted.out) # new file with top 20% of sorted output
printf "$head_20_percent" > $new_fn
#/垃圾箱/垃圾箱
sort-r-g-k4,4tempfile\u sorted.out
lncnt=$(wc-l$new\u fn

您做了哪些努力?你能发布一个更可测试的输入吗?我们无法想象第9列中的数据您的尝试是什么?请查看
sort
。可能类似于
排序-nk10
。然后导入
head
并告诉我们它是如何进行的。@Darren,请在您的帖子中也添加预期的输出以及代码标签。
wc-l
可以用来计算行数,百分比可以通过本机计算,因为在这种情况下,浮点运算没有任何好处。