【问题标题】:Percentages of values in rows grouped by Chargepoint按 Chargepoint 分组的行中值的百分比
【发布时间】:2020-12-13 12:41:28
【问题描述】:

dataframe

有人知道我该如何回答这个问题:每个 Chargepoint_skey 使用哪个 socket_id 更多(socket id 1 或 socket id 2)?并以百分比显示,以便我可以快速查看特定充电点,例如:在 60% 的情况下,使用套接字 1,在 40% 的情况下,在充电点 x 使用套接字 2。

到目前为止我获取数据框的代码:

vraag_6 <- FACT_CHARGESSESION_JOINDIMLOCATION %>%
           select(ChargePoint_skey, ChargeSession_skey, Socket_ID) %>%
           group_by(ChargePoint_skey)

subset_vraag_6 <- subset(vraag_6, !Socket_ID == "XXXXXX") %>%
                  group_by(ChargePoint_skey) 

 

【问题讨论】:

  • 你能分享使用 dput() 的可重现示例吗?
  • 数据框有 101578 行,所以我不知道如何轻松与您分享,如果您是这个意思? Dput 输出太大,无法在此处发布... :(
  • 你可以做 dput(head(df,10)) 其中 df 是你的数据框
  • 结构(list(ChargePoint_skey = c(3669, 3704, 3704, 3588, 3148, 2352), ChargeSession_skey = c(9501222, 14374723, 14204382, 9326489, 10112787, 17682), cSocket292 “1”,“1”,“1”,“2”,“2”,“2”)),row.names = c(NA,-6L),class= c(“grouped_df”,“tbl_df”, “tbl”,“data.frame”),.Names = c(“ChargePoint_skey”,“ChargeSession_skey”,“Socket_ID”),组 = 结构(列表(ChargePoint_skey = c(2352、3148、3588、3669、3704), .rows = list(6L, 5L, 4L, 1L, 2:3)), .Names = c("ChargePoint_skey", ".rows"), row.names = c(NA, -5L), class= c( "tbl_df", "tbl", "data.frame"), .drop = TRUE))
  • @KarthikS 我用了 head(mydata, 6) 因为 10 还是太长了

标签: r dplyr data-manipulation


【解决方案1】:

这行得通吗:

library(dplyr)
df %>% group_by(ChargePoint_skey, Socket_ID) %>% 
     mutate(freq = n()) %>% 
       group_by(ChargePoint_skey) %>% 
                mutate(Most_Sockets = freq/n())
# A tibble: 6 x 5
# Groups:   ChargePoint_skey [4]
  ChargePoint_skey ChargeSession_skey Socket_ID  freq Most_Sockets
             <dbl>              <dbl> <chr>     <int>        <dbl>
1             3669            9501222 1             1        1    
2             3704           14374723 1             2        0.667
3             3704           14204382 1             2        0.667
4             3704            9326489 2             1        0.333
5             3148           10112787 2             1        1    
6             2352           17682592 2             1        1   

使用的数据:

df
# A tibble: 6 x 3
# Groups:   ChargePoint_skey [4]
  ChargePoint_skey ChargeSession_skey Socket_ID
             <dbl>              <dbl> <chr>    
1             3669            9501222 1        
2             3704           14374723 1        
3             3704           14204382 1        
4             3704            9326489 2        
5             3148           10112787 2        
6             2352           17682592 2   

【讨论】:

  • 能否给我一个关于频率列的详细描述?究竟是什么频繁出现?
  • @daniel,所以首先按这两列分组并查找计数。然后我只是按 skey 列分组以获得百分比
  • 这是我要找的代码:subset_vraag_6_2 % count(ChargePoint_skey, Socket_ID) %>% group_by(ChargePoint_skey) % >% mutate(perc_n = n/sum(n)) 我首先需要删除值为 XXXXXX 的套接字 id。不过感谢您的时间和精力!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多