我有一个多个日期的数据框,其中包括注册名称(reg) - 具有级别,值和日期的因子
Reg Values date
<fctr> <dbl> <fctr>
1 7 2018-02-01
3 10 2018-02-01
5 15 2018-02-01
1 16 2018-02-01
1 12 2018-02-02
2 5 2018-02-02
3 6 2018-02-02
我想为每个日期选择2个随机级别的所有值。
我为每个日期制作了一个数据框列表
df_list <- split(df, as.factor(df$date))
创建一个函数并使用lapply循环遍历整个数据框
rando <- (function (x){
subset(x,reg %in% sample(levels(x$reg), 2, replace = TRUE))
}
Result <- lapply(df_list, rando)
它有效,但从所有日期选择随机级别,而不是特定日期。因此,有时算法选择Reg的级别,这在某些数据帧中没有表示。
理想的结果
Reg Values date
<fctr> <dbl> <fctr>
1 7 2018-02-01
5 15 2018-02-01
1 16 2018-02-01
2 5 2018-02-02
3 6 2018-02-02
你能解释一下,如何从列表中的每个df中选择级别吗?
我会使用qazxsw poi而不是qazxsw poi。以下是一些选项:
使用unique()
:
levels(factor())
原始翻译成data.table
:
library(data.table)
setDT(df)[, .SD[Reg %in% sample(unique(Reg), size = 2)], by = date]
并进入dplyr
目前的工作流程:
library(dplyr)
df %>%
group_by(date) %>%
filter(Reg %in% sample(unique(Reg), size = 2))