【问题标题】:Partitioning Data in 'R' based on data size根据数据大小对“R”中的数据进行分区
【发布时间】:2017-11-13 20:59:36
【问题描述】:

我目前正在开发一个程序,该程序分析叶面积并将其与叶在集群中的位置进行比较(即它是第一片叶子、第三片叶子、最后一片叶子等),并正在分析位置之间的关系、面积、质量等。我有一个包含大约 5,000 片叶子和 1,000 个簇的数据库,这就是问题所在。

集群有不同的数量,大多数有 5 片叶子,但有些有 2 片、8 片或介于两者之间的任何地方。我需要一种方法来按集群中的数字分隔集群,以便程序不会将具有 3 个叶子的集群与具有 7 个叶子的集群相同。我的 .csv 单独输入了每个叶子,因此无法简单地手动输入不同的集合.

我在“R”方面相当新,所以我可能在这里缺少一项明显的技能,但我们将不胜感激任何帮助。我也理解这很令人困惑,所以请随时回答澄清问题。

提前致谢。

【问题讨论】:

  • 你的代码在哪里?
  • 我的意思是,我可以提供它,但它没有什么可做的,因为我当前的项目没有对数据进行子集化。我只需要一种方法来对数据进行子集化,到目前为止我还没有这样做。

标签: r tree subset partitioning


【解决方案1】:

如果我正确理解了这个问题,听起来您想根据某个定义的组来计算事物(在您的情况下是 clusterPosition?)。使用 dplyr 执行此操作的一种方法是将group_bysummarizemutate 一起使用。后者保留原始数据集中的所有行并简单地向其中添加一个新列,前者像行一样聚合并返回每个唯一分组变量的汇总统计信息。

例如,如果您的数据如下所示:

df <- data.frame(leafArea = c(2.0, 3.0, 4.0, 5.0, 6.0), cluster = c(1, 2, 1, 2, 3), clusterPosition = c(1, 1, 2, 2, 1))

要获得每个唯一 clusterPosition 的平均值和标准差,您可以执行以下操作,这将为每个唯一 clusterPosition 返回一行。

library(dplyr)
df %>% group_by(clusterPosition) %>% summarize(meanArea = mean(leafArea), sdArea = sd(leafArea))

如果您想将每个独特的叶子与其 clusterPosition 的某些特征进行比较,即您想保留原始数据集中的所有单独行,您可以使用 mutate 而不是 summarise。

library(dplyr)
df %>% group_by(clusterPosition) %>% mutate(meanPositionArea = mean(leafArea), diffMean = leafArea - meanPositionArea)

【讨论】:

    猜你喜欢
    • 2017-01-27
    • 2014-04-13
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 2017-12-11
    • 2018-11-11
    相关资源
    最近更新 更多