2013-10-17 76 views
2

我想從包含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 

對於每一個我的類羣我有1-5之間的複製,使我有100個類羣,但230個數據點。 (例如,上表中的Curculionidae.Ischapterapion.sp。具有2個重複)。

我在隨機使用下面的代碼成功取樣50行:

new.df<-high.diversity[sample(nrow(high.diversity),50),]

不過,我的問題是,上面的代碼提供了50行,但我真正想要的是選擇50分類羣在隨機的,並且對這些Taxon中的每一個都有複製品。 (即,每個具有多個重複的50個分類可能給出接近100行)。因此,我需要更改上面的代碼來選擇50個隨機分類,幷包含這些分類中的所有重複。

任何人都可以建議我怎麼做到這一點?

非常感謝,

中號

回答

2

從分類羣樣品和子集的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