查找第一列的最小值和最大值 - 由第二列
问题描述:
我有很多未排序的数据在文本文件中的格式如下组合:查找第一列的最小值和最大值 - 由第二列
1.0 10
1.8 10
1.1 10
1.9 20
2.8 20
2.1 20
2.9 20
...
对于第二列中的每个值,我想获取第一列中的值的间隔。因此,对于上面的例子,结果应该是
1.0 1.8 10
1.9 2.9 20
我怎么能做到这一点与C/C++,AWK或其他Linux shell工具?
答
您可以使用此AWK:
awk '{
if (!($2 in nmin) || $1<nmin[$2])
nmin[$2]=$1;
else if ($1>=nmax[$2])
nmax[$2]=$1
}
END {
for (a in nmin)
print nmin[a], nmax[a], a
}
' inFile
答
我认为这应该工作:
{ read vStart int &&
while read vNext nextInt; do
if [ $int -ne $nextInt ]; then
echo "$vStart $v $int";
vStart=$vNext;
fi
v=$vNext;
int=$nextInt;
done &&
echo "$vStart $v $int"; }
答
要添加另一种选择,你可以在R请勿这个问题,以及:
d.in <- read.table(file = commandArgs(trailingOnly = T)[1]);
write.table(
aggregate(V1 ~ V2, d.in, function (x) c(min(x),max(x)))[,c(2,1)]
, row.names = F
, col.names = F
, sep = "\t");
然后,只需调用这个脚本Rscript
:现在
$ Rscript script.R data.txt
1 1.8 10
1.9 2.9 20
的问题应该是清楚的。 – oberlies 2014-04-18 14:49:30