r - 使用crossing和sample_n对多个不同的样本大小进行采样以创建单个df
问题描述
我正在尝试使用 sample_n 对数据帧进行采样。我知道 sample_n 通常一次只需要一个 size= 参数,但是,我想对 df 中从 2 到最大行数的大小进行采样。不幸的是,我在下面编译的代码不能完成这项工作。所需的输出将是一个带有 id= 列的数据框,或者是一个除以来自 cross() 的 id 列的列表。
df <- data.frame(Date = 1:15,
grp = rep(1:3,each = 5),
frq = rep(c(3,2,4), each = 5))
data_sampled_by_stratum <- df %>%
group_by(Date) %>%
crossing(id = seq(500)) %>% # repeat dataframes
group_by(id) %>%
sample_n(size=c(2:15)) %>%
group_by(CLUSTER_ID,Date) %>% filter(n() > 2)
解决方案
如果您有一个包含不同站点的专栏,您可以这样做。
data_sampled_by_stratum <- data_grouped_by_stratum %>%
group_by(siteid, Date) %>%
crossing(id = seq(500)) %>% # repeat dataframes
sample_n(rbinom(1,sum(siteid==i),(1-s)^2))
推荐阅读
- react-native - 在 react-native 中打开键盘时视图正在上升
- excel - 以分钟而不是天为单位存储以 1 为底数的时间值?
- python - 将 dataFrame 转换为可读的,以便使用 plotly express 绘制条形图
- javascript - 滚动上的动画图像和内容
- javascript - 前端没有显示性别
- r - 联合多行数据框
- swift - 我在 Xcode 中遇到时间戳问题
- css - React Natve 中的神经拟态?
- php - 在 WP Job Manager 工作列表中显示摘录
- python - 在 python 或 django 本身中过期时自动生成 access_token