У меня есть следующий фрейм данных с 4 числовыми столбцами:
df <- structure(list(a = c(0.494129340746821, 1.0182303327812, 0.412227511922328,
0.204436644926016, 0.707038309818134, -0.0547300783473556, 1.02124944293185,
0.381284586356091, 0.375197843213519, -1.18172401075089), b =
c(-1.34374367808722,
-0.724644569211516, -0.618107980582741, -1.79274868750102,
-3.03559838445132,
-0.205726144151615, -0.441511286334811, 0.126660637747845,
0.353737902975931,
-0.26601393471207), c = c(1.36922677098999, -1.81698348029464,
-0.846111260721092, 0.121256015837603, -1.16499681749603, 1.14145675696301,
-0.782988942359773, 3.25142254765012, -0.132099541183856, -0.242831877642412
), d = c(-0.30002630673509, -0.507496812070994, -2.59870853299723,
-1.30109828239028, 1.05029458887117, -0.606381379180569, -0.928822706709913,
-0.68324741261771, -1.17980245487707, 2.20174180936794)), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
Я хотел бы создать два новых факторных столбца, в которых я группирую столбцы 2 и 3 в соответствии со значениями, приведенными в списке L
:
ColsToChoose = c(2,3)
L = list()
L[[1]] = c(-0.3, 0.7)
L[[2]] = c(-1, 0.5, 1)
df %>% mutate_at(ColsToChoose, funs(intervals = cut(., c(-Inf, L[[.]], Inf))))
То есть я ожидаю получить два новых столбца, первый из которых называется intervals_b
, указывающий, находятся ли значения столбца b
(столбец 2) между -Inf
и -0,3, -0,3 и 0,7 или 0,7 и Inf
, и аналогично для столбца c
: -Inf
до -1, от -1 до 0,5, от 0,5 до 1 и от 1 до Inf
.
Iполучаю ошибку:
Ошибка в mutate_impl (.data, dots): Ошибка оценки: не удалось выполнить рекурсивное индексирование на уровне 2
Я хотел бы сделать это дляВ общем случае, поэтому я использую неявные имена.
Есть идеи?