首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从R中的多个in中获取独占和总计数

如何从R中的多个in中获取独占和总计数
EN

Stack Overflow用户
提问于 2021-04-18 01:42:18
回答 1查看 291关注 0票数 4

我在R中有下面提到的数据帧。

代码语言:javascript
复制
CusID     Date                   Type        LogCat             PriceCode
C-1       2021-01-02 14:13:10    Demo                           
C-2       2021-01-02 13:17:07    Pro         SPR, DET, RTD      KR
C-2       2021-01-02 14:15:10    Pro         SPR, DET, RTD      SR
C-2       2021-01-02 16:14:08    Pro         SPR, DET, RTD      DE
C-3       2021-01-02 17:11:03    Pro         DET                KL
C-3       2021-01-02 12:14:24    Pro         DET                ZT
C-3       2021-01-02 12:33:34    Pro         DET                KR
C-4       2021-01-02 10:43:55    Pro                            KR
C-5       2021-01-03 20:23:35    Pro         SPR, RTD           KR

Dupt<-

代码语言:javascript
复制
structure(list(CustID = c("C-1", "C-2", 
"C-2", "C-2", "C-3", "C-3", 
"C-3", "C-4", "C-5"), DATE = c("2021-01-02 14:13:10", "2021-01-02 13:17:07", "2021-01-02 14:15:10", "2021-01-02 16:14:08", "2021-01-02 17:11:03", "2021-01-02 12:14:24", "2021-01-02 12:33:34", "2021-01-02 10:43:55", "2021-01-03 20:23:35"), TYPE = c("Demo", 
"Pro", "Pro", "Pro", "Pro", "Pro", "Pro", "Pro", "Pro"
), LogCat = c(NA, "SPR,DET,RTD", "SPR,DET,RTD", "SPR,DET,RTD", 
"DET", "DET", "DET", NA, " SPR, RTD "), PriceCode = c(NA,"KR", "SR", "DE", "KL", "ZT", "KR", "KR", "KR")), class = "data.frame", row.names = c(NA, 
-9L))

通过使用上述dataframe,我需要根据日期和月份创建以下两个不同的输出dataframe。例如,假设日期为2021-01-02。

所需数据帧1<-

代码语言:javascript
复制
Total         4        100.00%
Demo          1        25.00%
Pro           3        75.00%

对于所需的数据帧2,我们只需要考虑Type不等于Demo的那些CusID。我们需要获得这样的CustIdLogCatPriceCode的以下计数。这里要注意的是,LogCatPriceCode中的值不是标准的,并且可以根据日期进行更改,因此我们不能对其进行硬编码。

这里的要求是对于每个唯一的CustID,对LogCatePriceCode中提到的值进行唯一计数。

例如,DET文本在CustID C-3中唯一可用,没有任何其他逗号分隔值,类似地,KR文本在CustID C-4中唯一可用,在ProceCode列中没有该特定(C-4) CustID的任何其他值。

与每个唯一LogCatPriceCode值连接在一起的(All)表示它已经与特定列中的其他值组合在一起。

最后一个NA列是静态的,只有当有一些CustID没有LogCat和PRO值,但仍然有Type作为PriceCode时才是静态的。

所需数据帧2<-

代码语言:javascript
复制
LogCat            Count        %          PriceCode       Count        %
SPR               0            0.00%      KR              1            50.00%
SPR (All)         1            50.00%     KR (All)        3            100.00%
DET               1            50.00%     SR              0            0.00%
DET (All)         2            100.00%    SR (All)        1            33.33%
RTD               0            0.00%      DE              0            0.00%
RTD (All)         1            50.00%     DE (All)        1            33.33%
Blank             1            33.33%     ZT              0            0.00%
-                 -            -          ZT (All)        1            33.33%
-                 -            -          KL              0            0.00%
-                 -            -          KL (All)        1            33.33%
-                 -            -          Blank           0            0.00%
Both Blank        0            0.00%      -               0            0.00%
EN

回答 1

Stack Overflow用户

发布于 2021-04-18 15:00:48

对于第一部分,库janitor将是有用的(即使对于第二部分)

第一部分

代码语言:javascript
复制
library(tidyverse)
library(janitor)
df %>% mutate(DATE = as.Date(DATE)) %>% select(1:3) %>%
  unique() %>%
  tabyl(TYPE, DATE) %>%
  adorn_totals("row") %>%
  adorn_percentages("col") %>%
  adorn_pct_formatting(2) %>%
  adorn_ns("front")

  TYPE  2021-01-02  2021-01-03
  Demo 1  (25.00%) 0   (0.00%)
   Pro 3  (75.00%) 1 (100.00%)
 Total 4 (100.00%) 1 (100.00%)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67141156

复制
相关文章

相似问题

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