我有一个类似的数据帧
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