我试图通过一些陈述来简化这一点。不确定如何去做(或者如果可以的话),但任何可以让我接近或尽可能少的步骤的人。我正在使用dplyr和lubridate。我有一个名为OutofRange(sample)的数据库;
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
我确实知道,我可能会问很多......我是新手,欢迎提出任何建议。只是寻找正确方向的基础或开端。
答案 0 :(得分:0)
我建议您先将数据转换为整齐的格式,然后使用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