【问题标题】:Sum up org-mode column depending on first column value根据第一列值总结 org-mode 列
【发布时间】:2015-11-24 13:40:40
【问题描述】:

我有一个表,其中第一列中有重复的 Unix 时间戳,如果它们具有相同的 Unix 时间戳,我想总结第二列的值。

|-----Time---| Value |                                                                                                                                                                                                                                       
| 1420067592 |    23 |                                                                                                                                                                                                                                       
| 1420076520 |    10 |                                                                                                                                                                                                                                       
| 1420078752 |     2 |                                                                                                                                                                                                                                       
| 1420067592 |     6 |                                                                                                                                                                                                                                       
| 1420076520 |     4 |                                                                                                                                                                                                                                       
| 1420078752 |    89 |                                                                                                                                                                                                                                       
| 1420067592 |    66 |                                                                                                                                                                                                                                       
| 1420078752 |    81 |                                                                                                                                                                                                                                       
| 1420076520 |    15 |               

我有这个的原因是我在一个代码块中进行多次耳语提取,并且想总结相同时间戳的值。

任何提示我如何在组织模式下做到这一点?用 Emacs 制作年度报告会很酷:)

【问题讨论】:

  • 您的示例中的预期输出是什么?它是单个单元格,还是具有所有唯一时间戳及其累积值的新表?
  • 两种解决方案都适合我

标签: emacs org-mode graphite


【解决方案1】:

我通过使用生成的表作为另一个代码块的输入找到了一个可接受的解决方案,该代码块正在执行 Python sn-p 以总结结果

#+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 |             

【讨论】:

    【解决方案2】:

    您可以使用 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:
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多