r-使用带外部参数的group_by和slice



我有一个类似的数据帧

df <- data.frame(region=c("north","north","south","north","south","south"),
status=c("open","closed","closed","open","open","open"))

变量CCD_ 1(另一个df中称为dataSamples的变量(和另一个变量CCD_。

我想根据之前由layeryOn函数设置的内容进行分组,这样我就可以为每个区域获得一个2(样本大小(的主集合和一个1的次集合。

我尝试的是

primarySamples <- df %>% group_by(stratifyOn) %>% 
slice_head(n=dataSamples$samplesize)

我得到的第一个错误是错误:必须按.data中的变量分组。*未找到列strstratifyOn

第二个错误是错误:n必须是单个数字因为dataSamples对每个区域观测都有一个样本大小。

是否有可能(如果有,如何(使用这些外部价值观,或者有更好的方法吗?

数据样本的精简版本是

dataSamples <- data.frame(region=c("north","south"), samplesize=c(2, 1))

在实际的df中还有其他几个变量和观察结果。样本大小的值取决于用户决定对哪个区域进行分层。

您可以使用group_by.dots参数来解决第一个问题。您的第二个问题可能很简单,只需子集datasamples$samplesize,但您还没有提供该问题的可复制示例,所以我不确定。

df <- data.frame(
region = c("north", "north", "south", "north", "south", "south"),
status = c("open", "closed", "closed", "open", "open", "open")
)
stratifyOn <- "region"
datasamples <-data.frame(samplesize = c(2, 1, 10))
df %>% group_by(.dots = stratifyOn) %>% slice_head(n = datasamples$samplesize[1])
# A tibble: 4 x 2
# Groups:   region [2]
region status
<chr>  <chr> 
1 north  open  
2 north  closed
3 south  closed
4 south  open  

最新更新