【问题标题】:Subset column based on a range of time基于时间范围的子集列
【发布时间】:2015-03-26 12:02:57
【问题描述】:

我正在尝试根据时间范围对数据框进行子集化。过去有人问过这个问题,答案是使用R CMD INSTALL lubridate_1.3.1.tar.gz(见链接:subset rows according to a range of time

这个答案的问题是我收到以下警告

> install.packages("lubridate_1.3.2.tar.gz")
Warning in install.packages :
  package ‘lubridate_1.3.2.tar.gz’ is not available (for R version 3.1.2)

我正在寻找与此答案非常相似的内容,但我无法弄清楚如何做到这一点。我有一个MasterTable,我的所有数据都组织成列。我的专栏之一叫做maxNormalizedRFU

我的问题很简单: 如何按时间对我的 maxNormalizedRFU 列进行子集化?

我只想添加另一列,它只显示maxNormalizedRFU 10 小时到 14 小时之间的数据。这是我到目前为止所拥有的:

#创建主表
MasterTable <- inner_join(LongRFU, LongOD, by= c("Time.h", "Well", "Conc.nM", "Assay")) 
#基于称为“测定”的 6 个不同子集,通过荧光 (RFU) 和光密度 (OD) 对我的数据进行归一化
MasterTable$NormalizedRFU <- MasterTable$AvgRFU/MasterTable$AvgOD 
#创建一个只选择每个“分析”的最大值的列
MasterTable <- ddply(MasterTable, .(Conc.nM, Assay), transform, maxNormalizedRFU=max(NormalizedRFU)) 
#问题
MasterTable$CutmaxNormalizedRFU <- ddply(maxNormalizedRFU, "Time.h", transform, [MasterTable$Time.h < 23.00 & MasterTable$Time.h > 10.00,])

Attached 是我的数据集的一个样本。由于原始文件有超过 90 000 行,我只附上了一小部分(只有一个检测和一个浓度)。

我的生产线目前正在使用 ddply 来执行子集,但这根本行不通。有人对如何解决此问题有建议吗?

提前谢谢你!

马蒂

【问题讨论】:

    标签: r time filter subset plyr


    【解决方案1】:

    我下载了您的数据并查看了。如果我没记错的话,您只需要使用Time.h 对数据进行子集化。在这里你有一个你想要的时间范围(10-23)。我使用了dplyr 并做了以下事情。您要求 R 在Time.h 中选取值介于 10 和 23 之间的行。您的数据框在此处称为mydf

    library(dplyr)
    filter(mydf, between(Time.h, 10, 23))
    

    【讨论】:

    • @Marty999 90,000 行并没有那么大。我能问一下你所说的时间框架一遍又一遍地重复是什么意思吗?
    • 您好 Jazzurro,非常感谢您的回复。我已经尝试过这种方法,但我似乎无法让它发挥作用。我认为问题在于时间框架一遍又一遍地重复(原来的那个)。由于这是在一个长表中,只要 24 小时过去,该表就会开始下一个“分析”。很难有一个函数来削减数据,因为它需要主动寻找所有符合 10-23 小时标准的数据......如果你看看我帖子中的最后一行,你认为它是可以向它添加一个标准,它只在给定的时间范围内选择值......?
    • 抱歉,不是很清楚。我在 96 孔板中进行了 6 个不同的实验。因此,它在相同的 24 小时内获取的所有数据,但它被分为 6 个子集(在我的表中)。所有的数据都是一个低于另一个。当 24 小时子集之一结束时,另一个将放置在其下方。这有意义吗?
    • @Marty999 我正在努力理解您所描述的内容。看来Assay 中可能有 6 个级别。那正确吗?您希望使用 10-23 标准为每个 Assay 子集数据。那正确吗?通过绑定六个子集,您拥有一个长格式数据框。那正确吗?在最坏的情况下,你能上传while数据吗?可能很难看到发生了什么。
    • 是的,我想你明白了。我在我的帖子中添加了一条评论,其中包含一个新数据集,该数据集结合了两个分析和所有列。在该表中,子集称为“测定”。为了给你一个想法,这是我希望实现的一个情节:再次app.box.com/s/zefii3hf6drkgb1yziv73zkhblt7ljbq,谢谢你在这件事上的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2021-12-05
    • 2010-09-08
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多