首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >量化选定列中的变量

量化选定列中的变量
EN

Stack Overflow用户
提问于 2017-04-11 20:53:56
回答 3查看 47关注 0票数 0

我想量化一个非常大的矩阵的变量。例如,假设我有

代码语言:javascript
运行
复制
1 Blue
2 Blue
3 Blue
4 Red
5 Red
6 Yellow

我想要获得:

代码语言:javascript
运行
复制
1-3 Blue
4-5 Red
6-6 Yellow

使用awk可以吗?

EN

回答 3

Stack Overflow用户

发布于 2017-04-11 21:15:42

代码语言:javascript
运行
复制
$ awk '$2!=p{if (s) print s"-"e, p; s=$1} {e=$1; p=$2} END{print s"-"e, p}' file
1-3 Blue
4-5 Red
6-6 Yellow
票数 2
EN

Stack Overflow用户

发布于 2017-04-11 23:59:37

一种不需要排序或分组输入的替代方案

代码语言:javascript
运行
复制
f() { sort -k2 -k1,1n$1 "$2"; }; paste <(f "" file) <(f "r" file) | 
awk '!a[$2]++{print $1"-"$3,$2}'

1-3 Blue
4-5 Red
6-6 Yellow
票数 2
EN

Stack Overflow用户

发布于 2017-04-11 21:03:37

在awk中:

代码语言:javascript
运行
复制
$ awk '
{ 
    if(min[$2]=="" || $1<min[$2]) # compare for min
        min[$2]=$1
    if(max[$2]=="" || $1>max[$2]) # compare for max
        max[$2]=$1
}
END {
    for(i in min)                 # output loop
        print min[i] "-" max[i], i
}' foo

输出:

代码语言:javascript
运行
复制
4-5 Red
1-3 Blue
6-6 Yellow

输出顺序是随机的。通过管道将其传送到sort以进行有序输出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43346516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档