【问题标题】:Trim data in multiple data frames using R使用 R 修剪多个数据帧中的数据
【发布时间】:2013-10-05 03:01:07
【问题描述】:

这是我正在使用的数据结构:

head(total_stats[[1]])



 cellID         X         Y Area   AvgGFP DeviationGFP   AvgRFP DeviationsRFP Slice totalGFP totalRFP
1      1  7.645614  92.10175  285 4.880702     4.795811 31.98246     12.402424     0     1391     9115
2      2 11.246544 225.18664  434 4.179724     4.792214 21.69816      7.471494     0     1814     9417
3      3 17.641860 346.75194  645 5.973643     6.199398 23.16279      9.691027     0     3853    14940
4      4  8.267218 441.30854  363 5.641873     6.714264 16.78788      5.220197     0     2048     6094
5      5  5.390845 480.99296  284 6.045775     8.907932 26.59507     10.562691     0     1717     7553
6      6  6.728365 529.86779  416 5.038462     5.083255 24.06971     10.818433     0     2096    10013

...

我在“total_stats”中有 54 个这样的数据帧,它们被称为 slice1-54,每个包含约 700 行 - 每行对应一个单元格

我想根据列中的值排除单元格(行),然后将未排除的单元格(行)放入另一个名为“trimmed_stats”的对象中。

例如,我想排除以下单元格:

totalGFP < 2000

totalRFP < 9000

Area < 300

剩下的所有单元格(行)(totalGFP 大于 2000、totalRFP 大于 9000 和 Area 大于 50)我想放入另一个名为“trimmed_stats”的对象中,该对象保持与“ total_stats”(当然不包括不感兴趣的单元格)。

我知道这是可能的,但我很难把注意力集中在 plyr 包和应用函数上(学习过程很慢,但我认为随着示例的增多,修改起来会变得更容易)。

感谢您的帮助!

【问题讨论】:

    标签: r dataframe subset


    【解决方案1】:

    由于 OP 中提到了plyr,所以我们开始:

    library(plyr)
    trimmed_stats <- llply(.data = total_stats, subset,
                           !totalGFP < 2000 & !totalRFP < 9000 & !Area < 300)
    

    llplylist 作为输入,并将结果作为list 给出。并以@SimonO101 为例:如果想要的结果是data 框架,请将llply 更改为ldply

    【讨论】:

      【解决方案2】:

      我希望你能提供一个可重复的小例子,但这应该会有所帮助:

      #   Create a small function to extract the rows you are interested in
      f <- function(x) x[ ! x$totalGFP < 2000 & ! x$totalRFP < 9000 & ! x$Area < 300 , ]
      
      #  Apply it to each data.frame in your list
      trim <- lapply( total_stats , f )
      
      #  Combine the results into one data.frame if desired...
      trimmed_stats <- do.call( rbind , trim ) 
      

      【讨论】:

      • 我猜最后一步是不必要的。他们提到他们希望结果具有与原始“total_stats”对象相同的结构。
      • @AnandaMahto 是的,同意。这就是我添加 if desired 位的原因!我也忘了他们正在寻找排除那些行,所以!。 :-)
      • @SimonO101 - 您将如何在 trimmed_stats 中保持每个切片分开?据我所知,这是将所有未排除的单元格组合成一个长数据框。让我知道这是否没有意义。 ..
      • @SimonO101 - 你能描述一下函数'f'是如何定义的吗?我想知道'!最后的“,”表示您正在修剪不符合指定削减的行吗?
      • @user2813055,您的问题在 R 的大多数介绍性材料中都有介绍。此外,Simon 对! 的使用在许多编程语言中绝非罕见,所以这应该是不言自明的!
      猜你喜欢
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 2020-12-18
      • 2018-12-28
      相关资源
      最近更新 更多