在bash脚本中我想从输入文件中挑出N个随机行并输出到另一个文件.如何才能做到这一点?
为了从未确定大小的数组中检索k个随机数,我们使用称为储层采样的技术.任何人都可以通过示例代码简要介绍它是如何发生的吗?
关注这个问题,我需要n从文件(或stdin)中随机获取完整的行.这将类似于head或tail,除了我想从中间的一些.
现在,除了使用链接问题的解决方案循环文件之外,n在一次运行中获得精确线条的最佳方法是什么?
作为参考,我试过这个:
#!/usr/bin/perl -w
use strict;
my $ratio = shift;
print $ratio, "\n";
while () {
print if ((int rand $ratio) == 1);
}
Run Code Online (Sandbox Code Playgroud)
$ratio我想要的线的粗略百分比在哪里.例如,如果我想要10行中的1个:
random_select 10 a.list
Run Code Online (Sandbox Code Playgroud)
但是,这并没有给我一个确切的数额:
aaa> foreach i ( 0 1 2 3 4 5 6 7 8 9 )
foreach? random_select 10 a.list | wc -l
foreach? end
4739
4865
4739
4889
4934
4809
4712
4842
4814
4817
Run Code Online (Sandbox Code Playgroud)
另一个想法是啜饮输入文件,然后n从数组中随机选择,但如果我有一个非常大的文件,这是一个问题. …
我在R中做了一些分析,我需要处理一些大型数据集(10-20GB,存储在.csv中,并使用read.csv函数).
因为我还需要将大型.csv文件与其他数据帧合并和转换,我没有计算能力或内存来导入整个文件.
我想知道是否有人知道导入随机百分比的csv的方法.
我已经看到一些例子,人们已经导入了整个文件,然后使用一个单独的函数来创建另一个数据框架,这是原始文件的一个样本,但是我希望能有一些不那么密集的东西.
我有一个内容文件
abc
def
high
lmn
...
...
Run Code Online (Sandbox Code Playgroud)
文件中有超过200万行.我想从文件中随机采样行并输出50K行.有关如何解决这个问题的任何想法?我正在考虑Perl及其rand功能(或者一个方便的shell命令将是整洁的).
相关(可能重复)问题: