r - 用 R 按一组间隔计算两列中的条目数
问题描述
我有两列填充了来自类似分布的数字。我想在图表上绘制所选间隔内每列的密度。我不知道如何最好地描述,所以我希望下面的代码能说明我的意图。
我的数据与此有些相似。
library(tidyverse)
df <- data.frame(A = rnorm(1000, 0 5), B = rnorm(1000, 10, 5)
到目前为止,我能想到的最好的方法包括左连接,但它不是一个理想的方法。
df$Cut_A <- cut(df$A, seq(-30, 30, 5)
df$Cut_B <- cut(df$B, seq(-30, 30, 5)
df_a <- df %>% group_by(Cut_A) %>% summarise(count_A = n())
df_b <- df %>% group_by(Cut_B) %>% summarise(count_B = n())
df2 <- left_join(df_a, df_b, by = c('Cut_A' = 'Cut_B'))
DF2 缺少某些区间的计数,因为它们未出现在 A 列中。
非常感谢任何更好的方法或修复来获得所需的图表。
解决方案
您不需要手动离散化变量和计数频率,ggplot::geom_histogram()
可以在后台完成所有这些操作:
data.frame(A = rnorm(1000, 0, 5), B = rnorm(1000, 10, 5)) %>%
# Gather the two variables into one column:
gather %>%
# gather() created two columns: 'key' and 'value'
ggplot(aes(x = value, fill = key)) +
# Plot the frequency within each of your desired bins using the "breaks" argument:
geom_histogram(breaks = seq(-30, 30, 5))
解释
当您使用收集(不命名任何要排除的列)时,它将所有变量以长格式放入一个名为“值”的列中。在另一个名为“key”的列中,原始变量名称将针对最初包含该变量的每一行数据重复。当您绘制它时,将填充颜色分配给变量将为“键”中的每个变量创建一个直方图。然后,您可以使用 break 参数设置 bin 以剪切变量,就像使用cut
. 它将对每个变量进行相同的分箱并分别计算频率,因为您将“填充”设置为“键”中的单独变量。
推荐阅读
- sql - Oracle SQL - 获取聚合数据
- excel - 当我将文件分配为对象时自动更改文件名
- dictionary - 我在 Kotlin 中的 URL 在它的末尾有一个额外的 &
- wpf - 如何以编程方式创建可由所有子例程访问的堆栈面板
- plot - Tableau - 在一张图中绘制多条线
- bash - shell中变量的双引号和没有双引号有什么区别
- firebase - Firebase 身份验证 - 无法添加电话号码进行测试
- python - python如何在文件夹中导入数据
- python - 从新闻网站beautifulsoup python的抓取链接抓取新闻文章
- alexa - 在我的网站上部署/参考 Alexa Skills 的好方法是什么