Counting the number of unique values by date in R

冷暖自知 提交于 2021-01-20 12:07:20

问题


Please help me to count the number of unique IDs per Date. so, initially, there is this data frame of IDs and dates

 ID         Date 
 1        2009/11/1
 1        2009/11/2
 1        2009/11/2
 2        2009/11/1
 2        2009/11/1
 2        2009/11/2 
 3        2009/11/1
 3        2009/11/3  

It is possible to rearrange it by date. If we do so then we will see that on the 1st there are 3 unique IDs. On the 2ed 2 unique ID and on the 3rd there is one unique ID. So the final table should look like this:

  Date      uniqueIDs
2009/11/1      3
2009/11/2      2
2009/11/3      1

I know that it is possible to aggregate with aggregate by using sum if the value is '1' or '0 'like that:

aggregate(DataFrame$RoomAv ~ DataFrame$Date, DataFrame, sum)

But how to count the unique number of IDs per day? The ID column is an integer column.

Thanks a lot!


回答1:


Here's a way you can do:

# using data.table

library(data.table)
setDT(df)[,uniqueN(ID),.(Date)]

        Date V1
1: 2009/11/1  3
2: 2009/11/2  2
3: 2009/11/3  1


# using dplyr

library(dplyr)
df %>% 
  group_by(Date) %>% 
  summarise(uniqueid = n_distinct(ID))

  Date      uniqueid
  <chr>        <int>
1 2009/11/1        3
2 2009/11/2        2
3 2009/11/3        1



回答2:


Here's a solution with sqldf.

library(sqldf)

rawData <-"ID,Date 
 1,2009/11/1
 1,2009/11/2
 1,2009/11/2
 2,2009/11/1
 2,2009/11/1
 2,2009/11/2 
 3,2009/11/1
 3,2009/11/3 "

data <- read.csv(text = rawData,as.is=TRUE)

sqlStmt <- "select Date, count(distinct ID) from data group by Date"
sqldf(sqlStmt)

...and the output:

> sqldf(sqlStmt)
       Date count(distinct ID)
1 2009/11/1                  3
2 2009/11/2                  2
3 2009/11/3                  1
>


来源:https://stackoverflow.com/questions/59808571/counting-the-number-of-unique-values-by-date-in-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!