Доброе утро,
У меня есть 2 фрейма данных: (25000,66) и таблица (10,2), содержащая 10 групп и последний идентификатор каждой группы.
В большой набор данных У меня есть одна переменная с именем id
. Это просто id = row_number()
id
1
2
3
4
5
...
25000
EDIT : много ответов, спасибо за все ваши идеи. Прочитав, я понял, что забыл важный шаг в описании данных, и извинился.
Я использую syntheti c сэмплирование на исходном bigdataset
для создания новых точек. Итак, после выборки столбец id
выглядит так:
id
1
2
2.1
3
3.8
4.74
5.12
6
...
25000
Вот почему я использовал предложение between с last_id
, чтобы переназначить идентификатор их группе.
Таблица пороговых значений :
last_id group_name
50 grp1
1500 grp2
8900 grp3
...
25000 grp10
Я хотел бы добавить новый столбец в большой набор данных, чтобы иметь идентификатор и имя группы, только при условии, что идентификатор попадает в диапазон, указанный группой в таблице пороговых значений .
А пока я написал это:
df <- df %>%
dplyr::mutate(group_name = case_when(id < last_id[1,1] ~ last_id[1,2],
between(id, last_id[1,1], last_id[2,1]) ~ last_id[2,2],
between(id, last_id[2,1], last_id[3,1]) ~ last_id[3,2],
between(id, last_id[3,1], last_id[4,1]) ~ last_id[4,2],
between(id, last_id[4,1], last_id[5,1]) ~ last_id[5,2],
between(id, last_id[5,1], last_id[6,1]) ~ last_id[6,2],
between(id, last_id[6,1], last_id[7,1]) ~ last_id[7,2],
between(id, last_id[7,1], last_id[8,1]) ~ last_id[8,2],
between(id, last_id[8,1], last_id[9,1]) ~ last_id[9,2],
id > last_id[9,1] ~ last_id[10,2]))
)
Но это не работает, я получаю эту ошибку:
Ошибка в FUN (слева, справа ): compareison (5) возможно только для списка типов и atomi c
Более того, этот код выглядит ужасно, должен быть другой способ использования apply или другой функции dplyr?
Спасибо вам за чтение.