这个问题以前已经回答过,但是解决方案不适用于我的特定情况。
stat
我基本上是在寻找这个东西
col1 | col2
A | 0
B | 1
A | 0
A | 1
B | 0
这两列都是因素。我一直在其他线程上找到以下解决方案:
col1 | col2 | Percentage
A | 0 | 0.67
A | 1 | 0.33
B | 0 | 0.50
B | 1 | 0.50
实际上,group_by似乎根本没有做任何事情。它没有给我“ n”或“ freq”列。不知道我在做什么错。是因为我正在处理因素吗?另外,如果不是很明显,则列中提供的值是假设的。
答案 0 :(得分:1)
一个选项是在按“ col1”分组后获得频率计数,然后将“ col2”也作为分组列,将该频率除以已创建的频率
library(dplyr)
df %>%
group_by(col1) %>%
mutate(n = n()) %>%
group_by(col2, add = TRUE) %>%
summarise(freq = n()/n[1])
# A tibble: 4 x 3
# Groups: col1 [2]
# col1 col2 freq
# <chr> <int> <dbl>
#1 A 0 0.667
#2 A 1 0.333
#3 B 0 0.5
#4 B 1 0.5
df <- structure(list(col1 = c("A", "B", "A", "A", "B"), col2 = c(0L,
1L, 0L, 1L, 0L)), class = "data.frame", row.names = c(NA, -5L
))