首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在数据帧R中通过分组获取计数和区分计数

如何在数据帧R中通过分组获取计数和区分计数
EN

Stack Overflow用户
提问于 2018-06-07 08:20:42
回答 2查看 74关注 0票数 0

我有下面提到的数据:

代码语言:javascript
复制
Date         ID
2018-04-01   K-1
2018-04-01   K-1
2018-04-02   K-2
2018-04-02   K-2
2018-04-03   K-2
2018-04-04   K-3
2018-05-01   K-5
2018-05-01   K-5
2018-05-02   K-6
2018-05-02   K-7

通过使用上面的数据块,我希望下面提到的两个矩阵,按日期分组:

New_DF1

代码语言:javascript
复制
Date        Unique Count    Duplicate_Count
2018-04-01  1               1
2018-04-02  1               1
2018-04-03  1               0
2018-04-04  1               0
2018-05-01  1               0
2018-05-02  2               0

New_DF2

代码语言:javascript
复制
Month     Unique Count    Duplicate_Count
May-18    4               2
Apr-18    3               0

我试过:

代码语言:javascript
复制
DF%>%
        group_by(Date) %>%
        summarise(count = n_distinct(ID))

但它不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-07 12:13:19

dplyr

代码语言:javascript
复制
library(dplyr)
New_DF1 <- DF %>%
  group_by(Date) %>%
  summarise(Unique_Count  = n_distinct(ID),
            Duplicate_Count = sum(table(ID)>1))

New_DF1
# # A tibble: 6 x 3
#         Date Unique_Count Duplicate_Count
#       <fctr>        <int>           <int>
# 1 2018-04-01            1               1
# 2 2018-04-02            1               1
# 3 2018-04-03            1               0
# 4 2018-04-04            1               0
# 5 2018-05-01            1               1
# 6 2018-05-02            2               0

New_DF2 <- New_DF1 %>%
  group_by(month = format.Date(Date, "%b-%y")) %>%
  summarize_at(2:3,sum)

New_DF2
# A tibble: 2 x 3
#    month Unique_Count Duplicate_Count
#    <chr>        <int>           <int>
# 1 Apr-18            4               2
# 2 May-18            3               1

带碱基R

代码语言:javascript
复制
New_DF1<- aggregate(ID ~ Date, DF, function(x) c(Unique_Count  = length(unique(x)),
                           Duplicate_Count = sum(table(x)>1)))

New_DF1<- cbind(New_DF1[1],New_DF1[[2]])

New_DF1
#         Date Unique_Count Duplicate_Count
# 1 2018-04-01            1               1
# 2 2018-04-02            1               1
# 3 2018-04-03            1               0
# 4 2018-04-04            1               0
# 5 2018-05-01            1               1
# 6 2018-05-02            2               0

New_DF2 <- New_DF1
New_DF2$month = format.Date(New_DF2$Date, "%b-%y")
New_DF2 <- aggregate(cbind(Unique_Count, Duplicate_Count) ~ month, New_DF2, sum)

New_DF2
#    month Unique_Count Duplicate_Count
# 1 Apr-18            4               2
# 2 May-18            3               1
票数 0
EN

Stack Overflow用户

发布于 2018-06-07 08:23:56

不如:

代码语言:javascript
复制
DF%>%
        group_by(Date, ID) %>%
        summarise(Unique_Count  = n_distinct(ID),
                  Duplicate_Count = n())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50736264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档