我试图用一些语句来简化它。不知道如何去做(或者如果我可以),但任何人都可以让我接近或尽可能少的步骤。我正在使用 dplyr 和 lubridate。我有一个名为 OutofRange(示例)的数据库;
OutOfRange %>% select(OutRange, TouchVPOC)
Source: local data frame [341 x 2]
OutRange TouchVPOC
(lgl) (lgl)
1 FALSE TRUE
2 FALSE FALSE
3 FALSE TRUE
4 FALSE FALSE
5 FALSE TRUE
OutOfRange %>% select(OutRange, TouchVPOC) %>% filter(OutRange == T) %>% tally
Source: local data frame [1 x 1]
n (int)
1 37
OutOfRange %>% select(OutRange, TouchVPOC) %>% filter(OutRange == T, TouchVPOC == T) %>% tally
Source: local data frame [1 x 1]
n (int)
1 15
15/37
[1] 0.4054054
因此,如果可能的话,我正在寻找类似这样的最终结果,其中 CountofDataFrame 是所有行的计数;其中 OutRange 和 TouchVPOC 是 TRUE 值的计数;且 Pct = TouchVPOC/OutRange。
CountOfDataFrame OutRange TouchVPOC Pct
341 37 15 .40
我确实意识到,我可能会问很多..而且我对此很陌生,欢迎任何建议。只是寻找正确方向的基础或起点。
最佳答案
我建议您首先将数据转换为整齐的格式,然后使用 group_by/summarize/mutate 进行聚合和百分比计算,如下所示。
a <- data.frame(OutRange = c(TRUE, FALSE, FALSE, FALSE, FALSE),
TouchVPOC = c(TRUE, TRUE, TRUE, FALSE, FALSE))
> a
OutRange TouchVPOC
1 TRUE TRUE
2 FALSE TRUE
3 FALSE TRUE
4 FALSE FALSE
5 FALSE FALSE
library(tidyr)
a %>%
gather(type, value, OutRange:TouchVPOC) %>%
group_by(type) %>%
summarize(true_count = sum(value)) %>%
mutate(total = sum(true_count), Pct = true_count / total)
Source: local data frame [2 x 4]
type true_count total Pct
(chr) (int) (int) (dbl)
1 OutRange 1 4 0.25
2 TouchVPOC 3 4 0.75
关于r - dplyr group_by 逻辑值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36004698/