我有一个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
的前2行返回第10和11行。
实际数据框架包含每个刺激和受试者的数千个观测值。我想用它分别绘制刺激的第一个也是最后200个观察结果。
尚未对其进行测试,但应起作用。
第一个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
。
也许您想要这样的东西:
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