将日期范围与单个类别变量匹配

时间:2019-03-08 16:08:48

标签: r dataframe

我是使用R的初学者,我想创建一个数据框,该数据框存储一系列日期至其各自的分类时间段。

paleo.periods <- c("Paleoindian","Early Paleoindian", "Middle Paleoindian", "Late Paleoindian", "Archaic","Early Archaic", "Middle Archaic","Late Archaic","Woodland","Early Woodland","Middle Woodland","Late Woodland","Late Prehistoric")

paleo.dates <- c(c(13500,8000), c(13500,10050) ,c(10050,9015), c(9015,8000), c(8000,2500), c(8000,5500), c(5500,3500), c(3500,2500), c(2500,1150), c(2500,2000), c(2000,1500), c(1500,1150), c(1150,500))

我希望安排可以参考给定时间段,例如:“ Late Woodland”,并获取其开始和结束时间范围的相关矢量,例如:(1500,1150)

我只是尝试通过

paleo.seg <- data.frame(paleo.periods,paleo.dates)
但是,

会创建3个变量:句点列表,向量列表和paleo.dates。我不确定为什么要创建3个变量,因为我希望它只有2个:paleo.periods和paleo.dates。我还想将它们称为paleo.seg$paleo.periods,它将返回时间段列表(以后用它以某种方式分别引用时间段),与日期相同。

基本上,我希望数据框看起来像这样:

paleoperiods           paleodates    
"Late Woodland"    1500,1100

因此,我可以专门查找字符串“ Late Woodland”并找到矢量日期。我尝试在当前的data.frame上执行此操作,并且 "Woodland" %in% paleo.seg返回false。因此,我觉得我误会了如何构建适当的数据框,以及如何将一个分类变量与两个日期匹配。

1 个答案:

答案 0 :(得分:0)

根据对数据框要做什么的推理,有几种方法可以解决此问题。我的建议实际上是将日期列拆分为两个单独的日期列(我相信,从您的描述开始和结束)。这样,您可以根据日期计算或使用规则。我发现这在查看数据时很有用,因为它使您能够基于日期的两个不同方面进行过滤。如果您希望它们位于同一列中,则可以将日期设置为字符,以使它们位于同一列中。但是,这种方法在将其用于探索性数据分析方面确实存在缺陷。例如:

paleo.dates <- c("13500,8000","13500,10050","10050,9015","9015,8000", ...)

这将使您可以查找Late Woodland并获得“ 1500,1100”,但是如果您以后要进行这种类型的分析,则将无法搜索到1500年以后的时期。