【问题标题】:Use R to count values in a number of different columns使用 R 计算多个不同列中的值
【发布时间】:2018-12-24 01:06:52
【问题描述】:

我有一个专利数据集,其中记录了 1) 与专利续展相关的月份和年份,以及 2) 专利持有人是选择支付专利费还是让专利失效。所以

patentid        fee1date         fee1paid    fee2date    fee2paid
1               May 2010       True        May 2013    False 
2               May 2010       True        April 2014  True

我要做的是按月和按年计算续展次数,以及放弃专利的数量,如下所示:

date      renewed              lapsed
May 2010  2                   0

我如何计算我现在拥有的数据?谢谢!

编辑:关键点是在不同的列中聚合这些。我现在遇到的问题是,当我尝试使用 count 库时,它将 2010 年 5 月的 2 次续订视为两个单独的值。

【问题讨论】:

  • 小建议 - 尽量避免列名中的大写和空格
  • 还有 - 你如何从你的示例数据框中获得No Patents Renewed 11?这对我来说就像魔术一样。请解释!
  • 大写可以,但是空格会麻烦
  • 我同意,但是大写字母可能会让打字很痛苦。 :)
  • 对不起,这是我包含的一个虚拟值:P

标签: r count find-occurrences


【解决方案1】:

使用dplyr

require(tidyr)
require(dplyr)      

data %>% gather(year,value, -Patent.ID) %>% 
         separate('year',c('Fee','N','Act')) %>% 
          spread(Act,value) %>% 
          unite(Fee, Fee,N, sep = '.') %>% 
          group_by(Date) %>% 
          summarise(R=sum(Paid=='True'), NotR=sum(Paid=='False'))

     # A tibble: 3 x 3
  Date           R  NotR
  <chr>      <int> <int>
1 April 2014     1     0
2 May 2010       2     0
3 May 2013       0     1

数据

data <- read.table(text="
               'Patent ID'      'Fee 1 Date'   'Fee 1 Paid'    'Fee 2 Date'   'Fee 2 Paid'
               1               'May 2010'       True        'May 2013'    False 
               2               'May 2010'       True        'April 2014'  True

               ",header=T, stringsAsFactors = F)

【讨论】:

  • 嗨,A. Suliman,感谢您的帮助!我已经尝试过您的方法,但不幸的是我收到以下错误消息:In addition: Warning message: attributes are not identical across measure variables; they will be dropped
  • 最终我到了那里,我使用 plyr 计数和聚合函数将每一列添加在一起。不过感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
相关资源
最近更新 更多