我导入了我的CSV文件:
records = FasterCSV.read(path, :headers => true, :header_converters => :symbol)
如何获取数据的唯一出现次数?例如,这里有一些示例数据:
ID,Timestamp
test,2008.12.03.20.26.32
test,2008.12.03.20.26.38
test,2008.12.03.20.26.41
test,2008.12.03.20.26.42
test,2008.12.03.20.26.43
test,2008.12.03.20.26.44
cnn,2008.12.03.20.30.37
cnn,2008.12.03.20.30.49
如果我只是致电records[:id]
,我就得到:
testtesttesttesttesttestcnncnn
我想得到这个:
testcnn
我该怎么做?
答案 0 :(得分:2)
如果您的数据不是 masive ,则可以使用Set类。
以下是一个例子:
p ['cnn','test','test','test','test','cnn','cnn'].to_set.to_a
=> ["cnn", "test"]
这是一个简单的基准:
require 'set'
require 'benchmark'
Benchmark.bm(5) do |x|
x.report("Set") do
a = []
20_000.times do |i|
a << 'cnn'<< 'test'
end
a.to_set.to_a
end
end
=>
user system total real
Set 0.110000 0.000000 0.110000 ( 0.109000)