【问题标题】:Subset data frame based on column values基于列值的子集数据框
【发布时间】:2015-01-19 11:51:37
【问题描述】:

我有一个数据框,其中包含随时间跟踪的多个细胞的荧光读数,例如:

Number=c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4)
Fluorescence=c(9,10,20,30,8,11,21,31,6,12,22,32,7,13,23,33)
df = data.frame(Number, Fluorescence)

得到:

   Number Fluorescence
1       1            9
2       2           10
3       3           20
4       4           30
5       1            8
6       2           11
7       3           21
8       4           31
9       1            6
10      2           12
11      3           22
12      4           32
13      1            7
14      2           13
15      3           23
16      4           33

Number 与单元格编号有关。我想要的是根据细胞数整理荧光读数。这里的 data.frame 有它计数 1-4,而我真的想要这样的东西:

   Number Fluorescence
1       1            9
2       1            8
3       1            6
4       1            7
5       2           10
6       2           11
7       2           12
8       2           13
9       3           20
10      3           21
11      3           22
12      3           23
13      4           30
14      4           31
15      4           32
16      4           33

或者更理想的情况是基于数字的列,然后是相应的细胞荧光:

        1    2    3    4
1       9    10   20   30
2       8    11   21   31
3       6    12   22   32
4       7    13   23   33

我使用 which 函数一次提取一个:

Cell1=df[which(df[,1]==1),2]

但这需要我为每个单元格(其中有数百个)写一行。

感谢您对此提供的任何帮助!抱歉,我还是个 R 菜鸟。

【问题讨论】:

    标签: r dataframe subset


    【解决方案1】:

    这个怎么样:

    library(tidyr);library(data.table)
    number <- c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4)
    fl <- c(9,10,20,30,8,11,21,31,6,12,22,32,7,13,23,33)
    df <- data.table(number,fl)
    df[, index:=1:.N, keyby=number]
    df
        number fl index
     1:      1  9     1
     2:      1  8     2
     3:      1  6     3
     4:      1  7     4
     5:      2 10     1
     6:      2 11     2
     7:      2 12     3
     8:      2 13     4
     9:      3 20     1
    10:      3 21     2
    11:      3 22     3
    12:      3 23     4
    13:      4 30     1
    14:      4 31     2
    15:      4 32     3
    16:      4 33     4
    

    为来自tidyrspread 函数中的唯一标识符添加索引。查看this 帖子了解更多信息。

    spread(df,number,fl)
       index 1  2  3  4
    1:     1 9 10 20 30
    2:     2 8 11 21 31
    3:     3 6 12 22 32
    4:     4 7 13 23 33
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      相关资源
      最近更新 更多