tab_cols 中的total() 的总和只能为一,有什么建议吗?

发布于 2025-01-14 16:07:41 字数 1579 浏览 7 评论 0原文

假设我有数据框“y”,

WR<-c("S",'J',"T")
B<-c("b1","b2","b3")
wgt<-c(0.3,2,3)
y<-data.frame(WR,B,wgt)

我想使用 expss 函数将 B 作为行、WR 和 WR 总计作为列进行列百分比交叉表

library(expss)

y %>% tab_cols(total(),WR) %>% # Columns
    tab_stat_valid_n("Base") %>% 
    tab_weight(wgt) %>% 
    tab_stat_valid_n("Projection") %>%
     tab_cells(mrset(B))%>%   # Row
    tab_stat_cpct(total_row_position = "none") %>%
    tab_pivot() 

结果

但总 Base 列与不匹配

#                      #Total    WR|J  WR|S WR|T
#                Base  1.000000    1   1.0    1
#          Projection  5.300000    2   0.3    3
#                  b1  5.660377   NA 100.0   NA
#                  b2 37.735849  100    NA   NA
#                  b3 56.603774   NA    NA  100

我想我找到了解决方案

y %>% tab_cols(total(),WR) %>% # Columns
    tab_cells(mrset(B))%>%   # Row 
    tab_stat_valid_n("Base") %>% 
    tab_weight(wgt) %>% 
    tab_stat_valid_n("Projection") %>%
    tab_stat_cpct(total_row_position = "none") %>%
    tab_pivot() 

 |    |            | #Total |  WR |       |     |
 |    |            |        |   J |     S |   T |
 | -- | ---------- | ------ | --- | ----- | --- |
 |  B |       Base |    3.0 |   1 |   1.0 |   1 |
 |    | Projection |    5.3 |   2 |   0.3 |   3 |
 | b1 |            |    5.7 |     | 100.0 |     |
 | b2 |            |   37.7 | 100 |       |     |
 | b3 |            |   56.6 |     |       | 100 |

Suppose I have dataframe 'y'

WR<-c("S",'J',"T")
B<-c("b1","b2","b3")
wgt<-c(0.3,2,3)
y<-data.frame(WR,B,wgt)

I want to make column percentage crosstab with B as row, WR, and total of WR as columns using expss function

library(expss)

y %>% tab_cols(total(),WR) %>% # Columns
    tab_stat_valid_n("Base") %>% 
    tab_weight(wgt) %>% 
    tab_stat_valid_n("Projection") %>%
     tab_cells(mrset(B))%>%   # Row
    tab_stat_cpct(total_row_position = "none") %>%
    tab_pivot() 

Result

But the total Base column does not match up

#                      #Total    WR|J  WR|S WR|T
#                Base  1.000000    1   1.0    1
#          Projection  5.300000    2   0.3    3
#                  b1  5.660377   NA 100.0   NA
#                  b2 37.735849  100    NA   NA
#                  b3 56.603774   NA    NA  100

I think I found the solution

y %>% tab_cols(total(),WR) %>% # Columns
    tab_cells(mrset(B))%>%   # Row 
    tab_stat_valid_n("Base") %>% 
    tab_weight(wgt) %>% 
    tab_stat_valid_n("Projection") %>%
    tab_stat_cpct(total_row_position = "none") %>%
    tab_pivot() 

 |    |            | #Total |  WR |       |     |
 |    |            |        |   J |     S |   T |
 | -- | ---------- | ------ | --- | ----- | --- |
 |  B |       Base |    3.0 |   1 |   1.0 |   1 |
 |    | Projection |    5.3 |   2 |   0.3 |   3 |
 | b1 |            |    5.7 |     | 100.0 |     |
 | b2 |            |   37.7 | 100 |       |     |
 | b3 |            |   56.6 |     |       | 100 |

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文