繁体   English   中英

计算 R 中每组唯一值的频率

[英]calculate frequency of unique values per group in R

如何计算唯一值的数量,以便我从中获得:

organisation <- c("A","A","A","A","B","B","B","B","C","C","C","C","D","D","D","D")
variable <- c("0","0","1","2","0","0","1","1","0","0","1","1","0","0","2","2")
df <- data.frame(organisation,variable)

organisation | variable
A            | 0
A            | 1
A            | 2
A            | 2
B            | 0
B            | 0
B            | 1
B            | 1
C            | 0
C            | 0
C            | 1
C            | 1
D            | 0
D            | 2
D            | 2
D            | 2

至:

unique_values | frequency
0,1,2         | 1
0,1           | 2
0,2           | 1

只有 3 个可能的序列:

  • 0,1,2
  • 0,1
  • 0,2

你可以做这样简单的事情:

library(dplyr)
library(stringr)

distinct(df) %>% 
  arrange(variable) %>%
  group_by(organisation) %>% 
  summarize(unique_values = str_c(variable,collapse = ",")) %>% 
  count(unique_values)

输出:

  unique_values     n
  <chr>         <int>
1 0,1               2
2 0,1,2             1
3 0,2               1

尝试这个

s <- aggregate(. ~ organisation , data = df , \(x) names(table(x)))
s$variable <- sapply(s$variable , \(x) paste0(x , collapse = ","))
setNames(aggregate(. ~ variable , data = s , length) , c("unique_values" , "frequency"))

  • 输出
  unique_values frequency
1           0,1         2
2         0,1,2         1
3           0,2         1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM