基于时间范围的子集列
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))
我正在尝试根据时间范围对数据框进行子集化。过去有人问过这个问题,答案是使用 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 小时之间的数据。这是我到目前为止的情况:
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))