我有一个表格,我想随机标记每组的三条记录为1
,所有其他记录为0
.
我知道我可以用下面的代码来实现这一点,但这看起来很笨拙,效率也很低.我还有别的方法可以完成同样的事情吗?
library(tidyverse)
dat <- data.frame(row_id = 1:10,
grp = c(rep("a", 5), rep("b", 5)))
dat_sample <- dat %>%
group_by(grp) %>%
sample_n(3) %>%
mutate(val = 1)
dat %>%
left_join(dat_sample, by = c("row_id", "grp")) %>%
mutate(val = coalesce(val, 0))