【发布时间】:2017-07-24 08:03:35
【问题描述】:
我有一个包含两列的 csv 文件:“id”和“values”
一个 id 可以在文件中以不同的值出现多次。我想对数据进行分层采样以获得一个较小的文件,其中包含每个 id 的确切或最多 N 个。
示例输入:
a 1,2,3
a 2,2,3
a 2,2,3
a 2,4,3
a 4,2,3
a 4,4,4
b 3,4,4
b 8,8,8
b 3,3,3
c 4,5,6
c 5,5,4
期望的输出(N=2):
a 1,2,3
a 2,2,3
b 3,4,4
b 8,8,8
c 4,5,6
c 5,5,4
在这一点上,我不关心组中的哪个 id,但如果是随机的,则加分。
由于文本文件可能非常大,我更喜欢内存高效 (linux) 命令行解决方案(即 bash、awk、sed 等)
【问题讨论】:
-
请添加您尝试解决此问题的内容...使用
awk,您可以使用以 id 为键的数组,如果该键最多被看到 N 次,则打印 -
感谢您的提示,我对 awk 不是很熟悉。我根据您的建议创建了一个解决方案。