我正在尝试从包含100个Taxon的原始数据框中随机抽取50个Taxon来获取新的数据帧。对于随机选择的50个分类单元,我想保留所有4列的信息。 我的原始数据框(high.diversity)的子集看起来像这样:
Taxon C N func.group
1 Curculionidae.Ischapterapion.sp. -29.06 2.19 herbivore
2 Curculionidae.Ischapterapion.sp. -29.27 1.60 herbivore
3 Curculionidae.Protapion.sp. -28.45 1.91 herbivore
4 Curculionidae.Protapion.sp. -25.99 0.55 herbivore
5 Curculionidae.Protapion.sp. -28.27 1.52 herbivore
6 Curculionidae.Hypera.meles -25.41 3.38 herbivore
7 Curculionidae.Sitona.sp. -27.05 2.01 herbivore
8 Curculionidae.Sitona.sp. -26.70 3.07 herbivore
.....
230
对于我的每个Taxon,我有1-5个重复,所以我有100个分类单位但有230个数据点。 (例如,Curculionidae.Ischapterapion.sp。在上表中有2个重复)。
我使用以下代码随机成功采样了50行:
new.df<-high.diversity[sample(nrow(high.diversity),50),]
然而,我的问题是上面的代码提供了50行,但我真正想要的是随机选择50个Taxon,并为每个Taxon进行所有重复。 (即每个具有多个重复的50个分类可能会接近100行)。因此,我需要更改上面的代码以选择50个随机分类,并包括那些分类中的所有重复。
有人可以建议我如何实现这个目标吗?
非常感谢,
中号
答案 0 :(得分:2)
来自您的Taxons的样本以及您的data.frame到这些分类的子集:
df <- read.table(header = TRUE, stringsAsFactors=FALSE, text = ' Taxon C N func.group
1 Curculionidae.Ischapterapion.sp. -29.06 2.19 herbivore
2 Curculionidae.Ischapterapion.sp. -29.27 1.60 herbivore
3 Curculionidae.Protapion.sp. -28.45 1.91 herbivore
4 Curculionidae.Protapion.sp. -25.99 0.55 herbivore
5 Curculionidae.Protapion.sp. -28.27 1.52 herbivore
6 Curculionidae.Hypera.meles -25.41 3.38 herbivore
7 Curculionidae.Sitona.sp. -27.05 2.01 herbivore
8 Curculionidae.Sitona.sp. -26.70 3.07 herbivore')
set.seed(1234)
take <- sample(unique(df$Taxon), 2)
df[df$Taxon %in% take, ]
Taxon C N func.group
1 Curculionidae.Ischapterapion.sp. -29.06 2.19 herbivore
2 Curculionidae.Ischapterapion.sp. -29.27 1.60 herbivore
3 Curculionidae.Protapion.sp. -28.45 1.91 herbivore
4 Curculionidae.Protapion.sp. -25.99 0.55 herbivore
5 Curculionidae.Protapion.sp. -28.27 1.52 herbivore