【问题标题】:Subsetting data.frame to return first 200 rows for specific condition in r子集 data.frame 以返回 r 中特定条件的前 200 行
【发布时间】:2018-02-24 01:02:47
【问题描述】:

我有一个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 个观察值。

【问题讨论】:

    标签: r subset


    【解决方案1】:

    尚未对此进行测试,但应该可以。

    前 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

    【讨论】:

    • 嘿,谢谢,我能够以类似的方式解决它,所以这很有效:)
    • 太棒了!如果是这样,您能否选择此作为最佳答案(按复选标记按钮),以便将您的问题标记为已解决?
    【解决方案2】:

    也许你想要这样的东西:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      • 2018-05-18
      • 2015-06-07
      • 1970-01-01
      相关资源
      最近更新 更多