基于时间范围的子集列

Subset column based on a range of time

我正在尝试根据时间范围对数据框进行子集化。过去有人问过这个问题,答案是使用 R CMD INSTALL lubridate_1.3.1.tar.gz(参见 link: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 小时之间的数据。这是我到目前为止的情况:

#创建主人table
MasterTable <- inner_join(LongRFU, LongOD, by= c("Time.h", "Well", "Conc.nM", "Assay")) 
#根据称为 "Assay" 的 6 个不同子集,通过荧光 (RFU) 和光密度 (OD) 对我的数据进行标准化
MasterTable$NormalizedRFU <- MasterTable$AvgRFU/MasterTable$AvgOD 
#creates 一个只选择每个 "Assay" 的最大值的列
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 来做子集,但这根本行不通。有人对如何解决此问题有建议吗?

提前致谢!

马蒂

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

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