r - 如何使用 R 中的范围数据显示离散类别中的频率?

标签 r range

我正在整理我掌握的关于恐龙及其年龄范围的大量数据。到目前为止,我的数据由一列名称组成,然后是两列过去数百万年的最大和最小日期,您可以在此处看到:

GENUS           ma_max  ma_min  ma_mid    
Abydosaurus     109     94.3    101.65    
Achelousaurus   84.9    70.6    77.75    
Acheroraptor    70.6    66.043  68.3215    

地质时间分为不同的时代(如侏罗纪和白垩纪),这些时代又分割为阶段。这些阶段有特定的年龄范围,我制作了一个数据框来显示这些:

Stage          ma_max ma_min ma_mid
Hettangian      201.6  197.0 199.30
Sinemurian      197.0  190.0 193.50
Pliensbachian   190.0  183.0 186.50
Toarcian        183.0  176.0 179.50
Aalenian        176.0  172.0 174.00
Bajocian        172.0  168.0 170.00
Bathonian       168.0  165.0 166.50
Callovian       165.0  161.0 163.00
Oxfordian       161.0  156.0 158.50
Kimmeridgian    156.0  151.0 153.50
Tithonian       151.0  145.5 148.25
Berriasian      145.5  140.0 142.75
Valanginian     140.0  136.0 138.00
Hauterivian     136.0  130.0 133.00
Barremian       130.0  125.0 127.50
Aptian          125.0  112.0 118.50
Albian          112.0   99.6 105.80
Cenomanian      99.6   93.5  96.55
Turonian        93.5   89.3  91.40
Coniacian       89.3   85.8  87.55
Santonian       85.8   83.5  84.65
Campanian       83.5   70.6  77.05
Maastrichtian   70.6   66.5  68.05

我试图找出每个阶段有多少个属。问题是范围 - 例如,一个属可以有一个跨越 3 个或更多阶段的范围,我希望每个阶段都记录一个属的存在。有什么简单的方法可以做到这一点吗?我考虑过使用 lattice 包中的“shingle”,正如在此处类似讨论中所建议的那样,但我对 R 很陌生,不确定它是否可以以数据有范围的方式实现。

最佳答案

我会推荐 sqldf包。

library(sqldf)

假设您的 GENUS 数据位于 genus 数据框中,而 Stage 位于 stage 数据框中。

res <- sqldf("select count(*) as countDinos , s.Stage, GROUP_CONCAT(g.GENUS) as names from genus g,stage s where (g.ma_max>=s.ma_min AND g.ma_max<=s.ma_max)  OR  (g.ma_min>=s.ma_min AND g.ma_min<=s.ma_max) OR (g.ma_max>s.ma_max AND g.ma_min<s.ma_min)   group by s.Stage order by s.ma_mid DESC  ")

应该给你这样的回应:

countDinos  Stage         names
   1        Albian                         Abydosaurus   
   1        Cenomanian                     Abydosaurus   
   1        Santonian                      Achelousaurus 
   2        Campanian       Achelousaurus ,Acheroraptor  
   2        Maastrichtian   Achelousaurus ,Acheroraptor 

关于r - 如何使用 R 中的范围数据显示离散类别中的频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26950123/

相关文章:

python - 检查列表中有多少元素落在指定范围内 (Python)

r - ggplot2中geom_step中线条的边框

r - highcharter hcaes "group"使用情况,同时使用 highchart2() 绘制大量数据

r - 如何安装库(readr)?

r - R中二项式数据的置信区间

database - 位图索引是范围查询的最佳选择吗?

php - 如何按时间范围从观看开始时间和观看持续时间获取观众?

r - 在单个函数中结合 S4 和 S3 方法

python,找到一个数字所属的范围,范围由整数列表组成

javascript - 选择时focusOffset可以在anchorOffset之前吗?