使用R来计数许多不同列中的值

时间:2018-07-16 13:08:18

标签: r count find-occurrences

我有一个专利数据集,其中记录了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

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

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

1 个答案:

答案 0 :(得分:4)

使用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)