为不同数据帧的列表创建循环

问题描述 投票:0回答:1

我有一个多个日期的数据框,其中包括注册名称(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中选择级别吗?

r
1个回答
1
投票

我会使用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))
© www.soinside.com 2019 - 2024. All rights reserved.