提问人:Antonio 提问时间:12/13/2022 最后编辑:Antonio 更新时间:12/13/2022 访问量:38
如何从向量中百分比构成 TRUE?
How can I percentage makeup of TRUE from a vector?
问:
这是用于派生我问题中第一个表的代码。
JH %>% group_by(ATT_ID, CAR=="B") %>%
summarize(count = n(), .groups = "drop")
ATT_ID | 汽车 == “B” | 计数 |
---|---|---|
一 | 假 | 1 |
二 | 真 | 1 |
三 | 真 | 3 |
三 | 假 | 5 |
四 | 假 | 2 |
五 | 真 | 4 |
六 | 真 | 8 |
六 | 假 | 4 |
我怎样才能让上面的表格看起来像:
ATT_ID | “B”的百分比 |
---|---|
一 | 0% |
二 | 100% |
三 | 37.5% |
四 | 0% |
五 | 100% |
六 | 67% |
- 请注意,一些 ID 被看到两次,以显示 FALSE 和 TRUE 的存在,而其他 ID 出现一次,以显示只有一个或另一个的存在。
谢谢
答:
1赞
langtang
12/13/2022
#1
您可以执行以下操作:
dt %>%
group_by(ATT_ID) %>%
summarize(perc = sprintf("%3.1f%%", 100*sum(Count*`CAR =="B"`)/sum(Count)))
输出:
# A tibble: 6 × 2
ATT_ID perc
<chr> <chr>
1 FIVE 100.0%
2 FOUR 0.0%
3 ONE 0.0%
4 SIX 66.7%
5 THREE 37.5%
6 TWO 100.0%
输入:
structure(list(ATT_ID = c("ONE", "TWO", "THREE", "THREE", "FOUR",
"FIVE", "SIX", "SIX"), `CAR =="B"` = c(FALSE, TRUE, TRUE, FALSE,
FALSE, TRUE, TRUE, FALSE), Count = c(1, 1, 3, 5, 2, 4, 8, 4)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -8L))
评论
0赞
Antonio
12/13/2022
这次我发布了正确的表格。我很抱歉!
0赞
r2evans
12/16/2022
@Antonio,Langtang 的代码会产生所需的输出(尽管不是按您的顺序,但这是细枝末节)。在此代码中,我唯一需要更改的是替换为(因为它可以在您的数据中找到),但除此之外,它会在您的数据上正确执行。如果有问题,你应该编辑你的OP,并告知为什么这个代码不起作用。`CAR =="B"`
`CAR == B`
评论
JH %>% group_by(ATT_ID) %>% summarize(pct_b = mean(CAR == "B")