在R中按组使用具有特定样本大小的列表,并将其应用于数据集
我有一个像这样的查找文件在R中按组使用具有特定样本大小的列表,并将其应用于数据集,r,list,sample,R,List,Sample,我有一个像这样的查找文件 id department sample_size 1 accounting 2 2 finance 3 id name gender salary_in_K department 1 john M $60 accounting 2 karina F $45 accounting 3 angela F
id department sample_size
1 accounting 2
2 finance 3
id name gender salary_in_K department
1 john M $60 accounting
2 karina F $45 accounting
3 angela F $70 accounting
4 mike M $40 accounting
5 ken M $25 accounting
6 fin M $37 finance
7 riley F $58 finance
8 joe M $61 finance
9 dre M $32 finance
10 kelly F $85 finance
11 lisa F $33 finance
我有一个像这样的数据框
id department sample_size
1 accounting 2
2 finance 3
id name gender salary_in_K department
1 john M $60 accounting
2 karina F $45 accounting
3 angela F $70 accounting
4 mike M $40 accounting
5 ken M $25 accounting
6 fin M $37 finance
7 riley F $58 finance
8 joe M $61 finance
9 dre M $32 finance
10 kelly F $85 finance
11 lisa F $33 finance
所以我期望的输出是5行,随机来自df,其中2行来自会计,3行来自财务
输出将包含数据帧中的所有列,但只有5行
谢谢 这里有一个tidyverse解决方案,使用dplyr、tidyr和purrr。假设查找数据帧为df1,数据为df2 我们使用嵌套将每个部门的数据存储在数据列中。然后与查找数据连接,并使用pmap为sample_n提供正确的参数,将采样数据存储在sampled中。最后,我们选择department,sampled和unnest将采样数据返回到行中
library(dplyr)
library(tidyr)
library(purrr)
set.seed(1001) # for reproducibility
df2 %>%
nest(data = -department) %>%
left_join(df1) %>%
mutate(sampled = pmap(list(data, sample_size), sample_n)) %>%
select(department, sampled) %>%
unnest(cols = sampled)
结果:
# A tibble: 5 x 5
department id name gender salary_in_K
<chr> <int> <chr> <chr> <chr>
1 accounting 3 angela F $70
2 accounting 5 ken M $25
3 finance 8 joe M $61
4 finance 9 dre M $32
5 finance 10 kelly F $85
下面是data.table解决方案,df1是您的查找表,我们可以从中生成命名向量,df2是主data.frame:
图书馆数据表
setDTdf2转换为data.table
df1部门id名称性别工资
>1:会计3安吉拉F$70
>2:会计5千元25元
>3:财务部8百万美元61
>4:财务9 dre M$32
>5:财务10凯利F$85
您可以按“部门”将df1查找表与df2联接,并为每个部门随机选择样本大小的行
嗨,我注意到你到目前为止已经问了11个问题,但都没有接受。请考虑接受每一个对你的案例最有效的问题的答案。每个帖子你只能接受一个答案,但你可以随意投票。你可以参考