подмножества из итерационной фильтрации (уровни столбца)

#r #filter #iteration

Вопрос:

Я ищу способ фильтрации фрейма данных в разных подмножествах, применяя разные условия к столбцу. И создайте новый фрейм данных

другими словами, я ищу функцию, способную это сделать

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

мои идеи состоят в том, чтобы извлечь такие уровни

 lev lt;- levels(df$group)  

а затем используйте lapply функцию, чтобы повторить ее для каждого уровня. Но у меня возникают проблемы с настройкой. И я не знаю, как генерировать новые кадры данных в процессе итерации…

Редактировать

Существует образец фрейма данных

 df lt;- 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"))  

Комментарии:

1. Пожалуйста, покажите небольшой воспроизводимый пример, ваш filter может не работать group = вместо group == того, чтобы, возможно, вам нужна группа по операции, т. е. df %gt;% group_by(group) %gt;% ...

2. Кроме того, если вам нужно создать разные фреймы данных, возможно, было бы более полезно сохранить список фреймов данных, поскольку R обладает множеством функций, связанных с повторением списков, а не хранить их как отдельные объекты фрейма данных.

3. Я думаю, что смысл комментария акруна выше заключается в том, чего вы пытаетесь достичь/каков ваш ожидаемый результат. Возможно, нет необходимости разбивать ваш фрейм данных. Также примером размещенного фрейма данных является сгруппированный фрейм данных.

4. Вы что-то ищете split(df, df$name) ?