我有一个1000列的数据框架。它是来自不同品种的动物的数据集。然而,我有更多的动物从一些品种。所以我想要做的是随机选择那些有更多动物的品种,让所有的品种都有相同数量的观察。详细情况:我有400只荷斯坦动物,300只泽西岛动物,100只赫里福德动物,150只尼洛尔动物和50只坎奇姆动物。我想做的是从每种动物中随机选出50只。所以我最后总共会养250只动物。我知道如何使用runif随机选择,但是我不知道如何在我的情况下应用这个方法。我的数据看起来是:
Breed ID Trait1 Trait2 Trait3
Holstein 1 11 22 44
Jersey 2 22 33 55
Nelore 3 33 44 66
Nelore 4 44 55 77
Canchim 5 55 66 88我试过:
Data = data[!!ave(seq_along(data$Breed), unique(data$Breed), FUN=function(x) sample(x, 50) == x),]但是,它不起作用,并且不允许我在我正在使用的服务器中安装软件包dplyr。提前谢谢。
发布于 2015-10-13 01:41:44
您可以在品种上split您的动物数据帧,然后对每个块应用一个自定义函数,它将随机提取50行:
animals.split <- split(animals, animals$Breed)
animals.list <- lapply(animals.split, function(x) {
y <- x[sample(nrow(x), 50), ]
return(y)
}
result <- unsplit(animals.list, f = animals$Breed)https://stackoverflow.com/questions/33092721
复制相似问题