R 采样以从每组中获取最大数量
使用下面这个非常简单的数据示例,我的目标是对R 采样以从每组中获取最大数量,r,dplyr,sample,R,Dplyr,Sample,使用下面这个非常简单的数据示例,我的目标是对A中的所有3个进行采样,并且只对B中的7个进行采样 id group 1 A 2 A 3 A 4 B 5 B 6 B 7 B 8 B 9 B 10 B ex_df <- data.frame(id = 1:10, group = c(rep("A", 3), rep("B", 7))
A
中的所有3个进行采样,并且只对B
中的7个进行采样
id group
1 A
2 A
3 A
4 B
5 B
6 B
7 B
8 B
9 B
10 B
ex_df <- data.frame(id = 1:10, group = c(rep("A", 3), rep("B", 7)))
但这会导致错误(由于明显的原因)
错误:size
必须小于或等于2(数据大小),已设置
replace
=使用带替换的采样为TRUE
但用替代品取样不是一种选择。是否有任何方法可以将sample\n
大小设置为最小5或组的大小
或者是我不知道的另一个函数可以实现这个功能?我也遇到了同样的问题,下面是我所做的
library(dplyr)
split_up <- split(ex_df, f = ex_df$group)
#split original dataframe into a list of dataframes for each unique group
sel_5 <- lapply(split_up, function(x) {x %>% sample_n(ifelse(nrow(x) < 5, nrow(x), 5))})
#on each dataframe, subsample to 5 or to the number of rows if there are less than 5
sel_5 <- do.call("rbind", sel_5)
#bind it back up!
库(dplyr)
分开
library(dplyr)
split_up <- split(ex_df, f = ex_df$group)
#split original dataframe into a list of dataframes for each unique group
sel_5 <- lapply(split_up, function(x) {x %>% sample_n(ifelse(nrow(x) < 5, nrow(x), 5))})
#on each dataframe, subsample to 5 or to the number of rows if there are less than 5
sel_5 <- do.call("rbind", sel_5)
#bind it back up!