【问题标题】:Matching a range of dates to a single categorical variable将日期范围与单个分类变量匹配
【发布时间】:2019-07-30 16:55:30
【问题描述】:

我是使用 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 个变量:周期列表、向量列表和古日期。我不确定它为什么要创建 3 个变量,因为我希望它只有 2 个:paleo.periods 和 Paleo.dates。我还想将它们称为paleo.seg$paleo.periods,它将返回期间列表(稍后使用它以某种方式单独引用期间),与日期相同。

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

paleoperiods           paleodates    
"Late Woodland"    1500,1100

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

【问题讨论】:

  • 你确定paleo.dates的格式是这样的吗?您提供的代码只是一个长度为 26 的向量。它不包含“对”数字。当我在上面运行data.frame 时,我只得到两列,而不是三个变量。它应该是一个列表而不是一个向量吗?
  • 是的,你是对的,它没有像我预期的那样对它们进行分组。有没有快速解决方法?

标签: r dataframe


【解决方案1】:

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

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

这将允许您查找 Late Woodland 并获得“1500,1100”,但如果您稍后会执行此类分析,您将无法搜索 1500 之后发生的时段。

【讨论】:

    猜你喜欢
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多