相关疑难解决方法(0)

在data.table中对每个组内的随机行进行采样

您将如何使用data.table有效地获取数据框中每个组内的行样本?

DT = data.table(a = sample(1:2), b = sample(1:1000,20))
DT
    a   b
 1: 2 562
 2: 1 183
 3: 2 180
 4: 1 874
 5: 2 533
 6: 1  21
 7: 2  57
 8: 1  20
 9: 2  39
10: 1 948
11: 2 799
12: 1 893
13: 2 993
14: 1  69
15: 2 906
16: 1 347
17: 2 969
18: 1 130
19: 2 118
20: 1 732
Run Code Online (Sandbox Code Playgroud)

我想的是:DT[ , sample(??, 3), by = a] …

r data.table

29
推荐指数
2
解决办法
1万
查看次数

在数据帧中为每组采样n个随机行

从这些问题- 从R数据帧的子集的行的随机样品 & 在数据帧样本随机行 我可以很容易地看到如何随机抽样(选择)"N"行从DF,或者"n"个来自特定级发起行df中的因子.

以下是一些示例数据:

df <- data.frame(matrix(rnorm(80), nrow=40))
df$color <-  rep(c("blue", "red", "yellow", "pink"), each=10)

df[sample(nrow(df), 3), ] #samples 3 random rows from df, without replacement.
Run Code Online (Sandbox Code Playgroud)

例如,从"粉红色"颜色中抽取3个随机行 - 使用library(kimisc):

library(kimisc)
sample.rows(subset(df, color == "pink"), 3)
Run Code Online (Sandbox Code Playgroud)

或编写自定义功能:

sample.df <- function(df, n) df[sample(nrow(df), n), , drop = FALSE]
sample.df(subset(df, color == "pink"), 3)
Run Code Online (Sandbox Code Playgroud)

但是,我想从每个级别的因子中抽取3(或n)个随机行.即新的df将有12行(蓝色3个,红色3个,黄色3个,粉红色3个).显然可以多次运行,为每种颜色创建newdf,然后将它们绑定在一起,但我正在寻找一种更简单的解决方案.

random r sample dataframe

24
推荐指数
4
解决办法
3万
查看次数

在函数内部使用dplyr时出错

我正在尝试组合一个函数,从我的原始数据框创建一个子集,然后使用dplyr的SELECT和MUTATE根据萼片/花瓣的宽度和长度的总和给出我的大/小条目的数量.

filter <- function (spp, LENGTH, WIDTH) {
  d <- subset (iris, subset=iris$Species == spp) # This part seems to work just fine
  large <- d %>%                       
    select (LENGTH, WIDTH) %>%   # This is where the problem arises.
    mutate (sum = LENGTH + WIDTH) 
  big_samples <- which(large$sum > 4)
 return (length(big_samples)) 
}
Run Code Online (Sandbox Code Playgroud)

基本上,我希望函数返回大花的数量.但是,当我运行该函数时,我得到以下错误 -

filter("virginica", "Sepal.Length", "Sepal.Width")

 Error: All select() inputs must resolve to integer column positions.
The following do not:
*  LENGTH
*  WIDTH 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

r function dplyr tidyeval

14
推荐指数
3
解决办法
5610
查看次数

随机抽样组

给定一个df带有列的数据框group,如何k在dplyr中随机对其进行采样?它应该返回k组中的所有行(假设至少有k唯一值df$group),并且每个组df应该同样可能返回.

r dplyr

7
推荐指数
2
解决办法
3105
查看次数

标签 统计

r ×4

dplyr ×2

data.table ×1

dataframe ×1

function ×1

random ×1

sample ×1

tidyeval ×1