首页 > 解决方案 > 来自迭代过滤的子集(列的级别)

问题描述

我正在寻找一种通过在列上应用不同条件来过滤不同子集中的数据框的方法。并创建新的数据框

换句话说,我正在寻找能够做到这一点的功能

require(dplyr)
df #dataframe
dfa <- df %>% filter(., group = "a") #the variable 'group' with the label 'a
dfb <- df %>% filter(., group = "b") #the variable 'group' with the label 'b'  
dfc <- df %>% filter(., group = "c") #the variable 'group' with the label 'c' 
#ect...

我的想法是提取这样的水平

lev <- levels(df$group)

然后使用一个lapply函数对每个级别进行迭代。但是我遇到了设置问题。而且我不知道如何从迭代过程中生成新的数据帧......

编辑

有一个数据框示例

df <- structure(list(group = structure(c(1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("1", "2"), class = "factor"), 
    name = structure(c(1L, 2L, 2L, 3L, 1L, 4L, 3L, 4L, 1L, 1L, 
    3L, 1L, 3L, 2L, 1L, 2L, 4L, 3L, 2L, 1L, 2L, 3L, 4L, 1L, 1L, 
    3L, 2L, 1L, 2L, 3L, 3L, 2L, 4L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 
    1L, 2L, 1L, 3L, 2L, 4L, 4L, 2L, 1L, 2L, 2L, 1L, 3L, 1L, 2L, 
    1L, 2L, 2L, 3L, 3L, 1L, 2L, 1L, 2L, 2L, 4L, 1L, 3L, 3L, 2L, 
    3L, 3L, 3L, 2L, 1L, 2L, 1L, 4L, 3L, 2L, 4L, 4L, 1L, 1L, 2L, 
    3L, 2L, 2L, 2L, 3L, 4L, 3L, 2L, 4L, 3L, 3L, 3L, 2L, 3L, 1L, 
    1L, 3L, 1L, 2L, 4L, 1L, 2L, 1L, 1L, 3L, 2L, 2L, 2L, 3L, 3L, 
    3L, 1L, 4L, 4L, 2L, 3L, 4L, 3L, 3L, 1L, 3L, 1L, 2L, 4L, 4L, 
    4L, 4L, 1L, 4L, 3L, 4L, 2L, 2L, 3L, 4L, 4L, 3L, 4L, 4L, 1L, 
    1L, 1L, 3L, 3L, 3L, 3L, 2L, 1L, 3L, 2L, 2L, 3L, 1L, 3L, 4L, 
    4L, 3L, 4L, 1L, 4L, 2L, 2L, 1L, 3L, 3L, 1L, 2L, 3L, 3L, 2L, 
    2L, 3L, 2L, 4L, 3L, 2L, 4L, 3L, 2L, 3L, 1L, 4L, 1L, 2L, 3L, 
    2L, 4L, 4L, 4L, 3L, 1L, 3L, 4L, 4L, 3L, 1L, 4L, 4L, 2L, 3L, 
    4L, 2L, 3L, 4L, 4L, 2L, 3L, 4L, 1L, 2L, 3L, 2L, 4L, 2L, 4L, 
    3L, 4L, 2L, 3L, 3L, 2L, 3L, 3L, 1L, 4L, 4L, 3L, 2L, 3L, 2L, 
    2L, 4L, 3L, 4L, 1L, 2L, 1L, 1L, 4L, 2L, 1L, 1L, 3L, 2L, 4L, 
    1L, 3L, 1L, 4L, 3L, 2L, 4L, 2L, 2L, 4L, 3L, 2L, 1L, 1L, 3L, 
    1L, 1L, 4L, 3L, 4L, 1L, 4L, 3L, 1L, 4L, 3L, 4L, 4L, 2L, 4L, 
    1L, 4L, 1L, 4L, 2L, 4L, 2L, 4L, 3L, 3L, 4L, 1L, 1L, 4L, 1L, 
    4L, 1L, 1L, 4L, 2L), .Label = c("a", "b", 
    "c", "d"), class = "factor"), value = c(30.868878, 
    0.062792, 0.064722, 61.76918, 30.66711, 2.3871e-05, 61.54933, 
    3.3162e-08, 29.943615, 29.14588, 62.29323, 30.698678, 62.1702, 
    0.06528, 28.045121, 0.056081, 3.4555e-05, 67.1306, 0.064405, 
    30.311288, 0.056603, 96.05593, 5.51e-05, 30.366509, 30.857624, 
    67.12948, 0.06739, 30.090438, 0.050491, 62.18732, 67.2805, 
    0.065279, 4.4343e-05, 0.032346, 60.69389, 63.36837, 65.74601, 
    0.33342, 0.054247, 0.077428, 30.882144, 0.045052, 30.306097, 
    65.9595, 0.041635, -2.705e-06, 3.8342e-05, 0.061501, 29.920227, 
    0.0379, 0.040964, 30.863306, 67.52386, 30.156661, 0.057475, 
    30.867581, 0.048172, 0.03641, 66.9387, 67.41591, 30.652644, 
    0.069988, 30.727157, 0.059174, 0.051819, 6.0334, 28.61209, 
    63.60349, 62.52879, 0.042666, 60.55028, 62.85379, 74.62217, 
    0.066198, 27.987038, 0.048742, 30.05475, 3.2355e-05, 60.8441, 
    0.055797, 4.3442e-05, 5.5346e-05, 30.056956, 30.676426, 0.035604, 
    68.52414, 0.057717, 0.09971, 0.08597, 61.83881, 1.5293e-05, 
    64.70352, 0.05464, 7.355e-05, 65.3831, 61.33682, 72.37654, 
    0.058391, 66.69953, 28.394395, 30.243572, 72.60976, 28.702126, 
    0.052706, 9.4268e-05, 30.69675, 0.042419, 30.735693, 29.437261, 
    63.00787, 0.045357, 1.5938, 0.0595, 65.15357, 61.27723, 65.263, 
    28.597913, 8.5219e-05, 5.6076e-05, 0.061616, 65.16801, -4.676e-06, 
    62.87619, 118.19605, 31.237558, 71.39104, 30.896975, 0.047113, 
    9.6642e-05, 4.4772e-05, 2.7448e-05, 2.4296e-05, 28.773587, 
    -7.32e-07, 62.65871, 4.345e-05, 0.33907, 0.04343, 113.06933, 
    9.2574e-06, 4.4781e-05, 61.83328, 5.324e-05, 7.7977e-05, 
    30.898415, 30.620734, 28.790323, 61.65496, 66.5346, 61.28427, 
    71.28221, 0.056823, 30.765944, 91.25581, 0.054061, 0.051203, 
    61.76252, 30.83635, 62.37974, 5.0292e-05, 2.4479e-05, 67.12157, 
    9.5559e-05, 30.009091, 3.0644e-06, 0.033829, 0.041163, 30.848661, 
    65.79429, 67.46681, 30.785285, 0.15129, 70.18517, 64.23277, 
    0.088034, 0.052606, 61.58522, 0.14265, 1.1295e-05, 61.46163, 
    0.29846, 2.6735e-05, 66.63594, 0.059632, 116.70889, 30.745654, 
    1.3743e-05, 29.345573, 0.065551, 60.71106, 0.047953, 8.7875e-06, 
    7.3588e-05, 4.3058e-05, 67.33211, 29.662684, 64.65532, 6.6811e-05, 
    -9.957e-07, 66.13292, 30.595709, 3.4998e-05, 0.00011454, 
    0.048417, 60.53301, 1.3004e-05, 0.068605, 65.22992, 2.8757e-06, 
    2.4577e-05, 0.04427, 62.16205, 4.3647e-05, 29.97387, 0.042776, 
    77.6753, 0.048735, 0.13577, 0.036806, 6.9006e-05, 84.94532, 
    9.7338e-05, 1.3316, 68.88738, 115.99801, 0.05736, 60.69266, 
    67.15351, 30.156764, 5.3195e-05, 3.4649, 79.33051, 0.06558, 
    69.3476, 0.085893, 0.058569, 3.8985e-05, 64.3347, 4.2267e-05, 
    29.406443, 0.64823, 30.714088, 30.854511, 5.1728e-05, 0.036175, 
    29.618613, 30.753743, 61.61991, 0.058629, 1.1714e-05, 29.226482, 
    68.83065, 30.899018, 6.1703e-05, 66.36974, 0.065556, 2.5469e-05, 
    0.067354, 4.1394, 2.7652e-05, 114.65137, 0.055644, 29.133173, 
    30.593966, 65.28648, 29.189217, 29.779958, 33.28, 61.27462, 
    4.0703e-05, 28.474595, 6.0563e-06, 65.58681, 27.752404, 7.3361e-05, 
    65.78799, 0.024518, -1.355e-05, 0.046811, 8.2334e-05, 29.919622, 
    1.3879e-05, 30.358172, -1.022e-05, 0.034263, 5.5449e-05, 
    0.040798, 8.2063e-05, 61.47507, 61.85918, 4.4857e-05, 30.592282, 
    30.562771, 0.00010078, 30.602541, 1.2156e-06, 28.494021, 
    30.2751, 4.6385e-05, 0.055263)), row.names = c(NA, -300L), groups = structure(list(
    group = structure(1L, .Label = c("1", "2"), class = "factor"), 
    .rows = structure(list(1:300), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), row.names = c(NA, -1L), class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))

标签: rfilteriteration

解决方案


推荐阅读