【发布时间】:2021-05-04 15:52:07
【问题描述】:
我有一个大型数据框,我想从另一列中的值开始对数据进行子集化,从而增加一定的时间。为了更清楚,数据框看起来像这样:
df <- data.frame(TimeStamp = c(100, 150, 200, 250, 300, 350, 400, 450, 500, 550),
Marker = c("start_trial", "", "", "", "", "start_trial", "", "", "", ""),
size=c(3, 5, 1, 5, 4, 6 , 9, 2, 4, 8),
trial=c("trial 1", "trial 1", "trial 1", "trial 1", "trial 1", "trial 2", "trial 2", "trial 2", "trial 2", "trial 2"))
TimeStamp Marker size trial
1 100 start_trial 3 trial 1
2 150 5 trial 1
3 200 1 trial 1
4 250 5 trial 1
5 300 4 trial 1
6 350 start_trial 6 trial 2
7 400 9 trial 2
8 450 2 trial 2
9 500 4 trial 2
10 550 8 trial 2
我想要做的是保留从与每个开始试验值关联的 TimeStamp 值开始的 100 到 150 毫秒之间的行,从而进行 epochs。所以,在这个例子中,我希望我的数据最终是这样的:
df2 <- data.frame(TimeStamp = c(200, 250, 450, 500), Marker = c("", "", "", ""), size=c(1, 5, 2, 4), trial=c("trial 1", "trial 1", "trial 2", "trial 2"))
TimeStamp Marker size trial
1 200 1 trial 1
2 250 5 trial 1
3 450 2 trial 2
4 500 4 trial 2
我的实际数据有将近一百万行,其中有数千个“开始试验”,并且 TimeStamp 值没有整齐地划分为 50 毫秒的时间段。
我希望有人可以帮助我。提前致谢!
【问题讨论】:
-
@akrun 我会改写:我需要保留从关联的 TimeStamp 值开始的 100 到 150 毫秒之间的行。因此,第一个“开始试用”值的值为 100 毫秒。然后,我想将行保持在 200 到 250 毫秒之间,因为 (100 + 100: 100 + 150)。对于第二个“开始试用”值,我想要相同的值:TimeStamp 列中的开始试用值是 350 毫秒,所以我想将行保持在 450 到 500 之间(350 + 100:350 + 150)。
-
您可以查看以下解决方案
标签: r dataframe dplyr data-science