r - 除以 R 中按因子分组的变量的所有组合
问题描述
我的数据如下所示:
set <- rep(c(1,2,3,4), each = 15)
h_density <- rep(c(1,3,6), each =5 )
n_density <- rep(c(100,500,1000,5000,10000), times =4 )
counts <- runif(60,900,10000)
data <- data.frame(set,h_density,n_density,counts)
data$set <- as.factor(data$set)
data$n_density <- as.factor(data$n_density)
data$h_density <- as.factor(data$h_density)
在给定的集合中,有h_densities
1、3、6 三个级别和n_densities
100,500,1000,5000,1000 五个级别。对于给定的 set 和 given h_density
,我想划分counts
低密度到高密度的所有可能组合。所以,我想划分与 n_densities 相关的计数100/500, 100/1000, 100/5000, 100/10000, 500/1000, 500/5000, 500/10000, 1000/5000, 1000/10000, 5000/10000
。对于输出,我想打印集合,h_density,n_densities 的打印比率,n_densities 的比率计数
例如,前几行的结果应如下所示:
set h_density n_density_ratio count_ratio
1 1 100/500 <value>
1 1 100/1000 <value>
1 1 100/5000 <value>
1 1 100/10000 <value>
1 1 500/1000 <value>
1 1 500/5000 <value>
...
我怎样才能在 R 中实现这一点?
解决方案
如果您的数据不是太大,inner_join()
那么通过 的不等式进行所有组合并过滤它是很好且简单的n_density
。
library(dplyr)
data %>%
inner_join(data, by = c("set", "h_density"), suffix = c(".l", ".r")) %>%
filter(as.numeric(n_density.l) < as.numeric(n_density.r)) %>%
mutate(n_density_ratio = paste0(n_density.l , "/", n_density.r))
推荐阅读
- javascript - 在 2 个 svg rects 之间绘制动态线
- django - Django - 在管理员工作中显示历史记录,但仅在管理员中发生操作时显示
- javascript - 为什么我的函数不会绘制多个砖块?
- r - 如何计算R中多年的每个月的中位数?
- arduino - Arduino 获取请求导致 FastAPI 无效 HTTP 请求
- loops - 基本while循环的断言错误/异常
- ruby-on-rails - Rails - 包含一个模块而不使用包含这个词
- mysql - 使用 node.js MySQL 连接 ECONNREFUSED 仍然出现错误
- javascript - 在Javascript中将TZ日期格式转换为“dd/mm/yy hh:mm:ss”
- python - 如何将高度和宽度传递给 imagekit 模板标签?