【问题标题】:Counting the number of unique values by date in R在R中按日期计算唯一值的数量
【发布时间】:2021-04-10 00:09:55
【问题描述】:

请帮我计算每个日期的唯一 ID 数。 所以,最初,有这个 ID 和日期的数据框

 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  

可以按日期重新排列。如果我们这样做,那么我们将看到 1 号有 3 个唯一 ID。第 2 天有 2 个唯一 ID,第 3 天有一个唯一 ID。所以决赛桌应该是这样的:

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

我知道如果值为“1”或“0”,则可以使用sumaggregate 聚合:

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

但是如何统计每天唯一的 ID 数量? ID 列是整数列。

非常感谢!

【问题讨论】:

  • 这是什么产品?它是数据库、电子表格还是其他东西?您能否添加一些详细信息以便我们为您提供帮助。
  • 它是一个数据框。

标签: r sum aggregate unique


【解决方案1】:

这是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)

...和输出:

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

【讨论】:

    【解决方案2】:

    你可以这样做:

    # 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
    

    【讨论】:

    • 尝试将其作为 df
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多