我有一个表在第一列中有重复的Unix时间戳,如果它们具有相同的Unix时间戳,我想总结第二列的值。
|-----Time---| Value |
| 1420067592 | 23 |
| 1420076520 | 10 |
| 1420078752 | 2 |
| 1420067592 | 6 |
| 1420076520 | 4 |
| 1420078752 | 89 |
| 1420067592 | 66 |
| 1420078752 | 81 |
| 1420076520 | 15 |
我之所以这样做,是因为我在代码块中进行多次窃听,并希望总结相同时间戳的值。
任何暗示如何在组织模式下执行此操作?用Emacs制作年度报告会非常酷:)
答案 0 :(得分:2)
我找到了一个可接受的解决方案,使用生成的表作为另一个代码块的输入,该代码块正在执行Python片段以总结结果
#+NAME: results
| Time | Value |
|------------+-------|
| 1420067592 | 23 |
| 1420076520 | 10 |
| 1420078752 | 2 |
| 1420067592 | 6 |
| 1420076520 | 4 |
| 1420078752 | 89 |
| 1420067592 | 66 |
| 1420078752 | 81 |
| 1420076520 | 15 |
#+begin_src python :var data=results :exports results
output = {}
for line in data:
if output.get(line[0]):
output[line[0]] += line[1]
else:
output[line[0]] = line[1]
return [[x,y] for x,y in output.items()]
#+end_src
#+RESULTS:
| 1420067592 | 95 |
| 1420076520 | 29 |
| 1420078752 | 172 |
答案 1 :(得分:1)
您可以使用 Melpa 上提供的 Orgtbl-Aggregate
包
#+name: thetimes
| Time | Value |
|------------+-------|
| 1420067592 | 23 |
| 1420076520 | 10 |
| 1420078752 | 2 |
| 1420067592 | 6 |
| 1420076520 | 4 |
| 1420078752 | 89 |
| 1420067592 | 66 |
| 1420078752 | 81 |
| 1420076520 | 15 |
#+BEGIN: aggregate :table "thetimes" :cols "Time vsum(Value)"
| Time | vsum(Value) |
|------------+-------------|
| 1420067592 | 95 |
| 1420076520 | 29 |
| 1420078752 | 172 |
#+END: