首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R数据中基于变量的随机选择

R数据中基于变量的随机选择
EN

Stack Overflow用户
提问于 2015-10-13 01:29:29
回答 1查看 1.3K关注 0票数 1

我有一个1000列的数据框架。它是来自不同品种的动物的数据集。然而,我有更多的动物从一些品种。所以我想要做的是随机选择那些有更多动物的品种,让所有的品种都有相同数量的观察。详细情况:我有400只荷斯坦动物,300只泽西岛动物,100只赫里福德动物,150只尼洛尔动物和50只坎奇姆动物。我想做的是从每种动物中随机选出50只。所以我最后总共会养250只动物。我知道如何使用runif随机选择,但是我不知道如何在我的情况下应用这个方法。我的数据看起来是:

代码语言:javascript
复制
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

我试过:

代码语言:javascript
复制
Data = data[!!ave(seq_along(data$Breed), unique(data$Breed), FUN=function(x) sample(x, 50) == x),]

但是,它不起作用,并且不允许我在我正在使用的服务器中安装软件包dplyr。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-13 01:41:44

您可以在品种上split您的动物数据帧,然后对每个块应用一个自定义函数,它将随机提取50行:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33092721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档