我有一个data.frame
,包含330万行和9列。以下是3个相关列的示例。
StimulusName Subject Pupil Means
1 1 101 3.270000
2 1 101 3.145000
3 1 101 3.265000
4 2 101 3.015000
5 2 101 3.100000
6 2 101 3.051250
7 1 102 3.035000
8 1 102 3.075000
9 1 102 3.050000
10 2 102 3.056667
11 2 102 3.059167
12 2 102 3.060000
13 1 103 3.085000
14 1 103 3.125000
15 1 103 3.115000
我希望根据刺激名称和主题对数据进行子集化,然后获取该子集的前几行或最后几行。因此,例如,通过获取df$StimulusName == 2 & df$Subject == 102
的前两行返回第10行和第11行。
实际数据框包含每个刺激和主题的数千个观察结果。我想用它来分别绘制刺激的第一次和最后200次观察。
答案 0 :(得分:0)
也许你想要这样的东西:
subCond <- function(x, r, c) {
m <- x[x[, 1] == r & x[, 2] == c,]
return(m)
}
收益率,例如:
> subCond(df, 1, 102)
StimulusName Subject PupilMeans
7 1 102 3.035
8 1 102 3.075
9 1 102 3.050
或
> subCond(df, 2, 101)
StimulusName Subject PupilMeans
4 2 101 3.01500
5 2 101 3.10000
6 2 101 3.05125
答案 1 :(得分:0)
没有对此进行测试,但应该有效。
前200
df_filtered <- subset(df, StimulusName == 2 & Subject == 102)
df_filtered <- df_filtered[1:200,]
然后绘制df_filtered
。
最近200
df_filtered <- subset(df, StimulusName == 2 & Subject == 102)
df_filtered <- df_filtered[(nrow(df_filtered)-199):nrow(df_filtered),]
然后绘制df_filtered
。