Я хотел бы сгенерировать уникальные числа (последовательные или случайные), сгруппированные по определенным столбцам, используя R.
Пример набора данных приведен ниже
fact_code style_ item buyer
1206 -23 LADIES TANK TOP 652
1206 -23 LADIES TANK TOP 652
1206 -23 LADIES TANK TOP 652
1214 593935_592435 SS T-SHIRT 254
1214 593935_592435 SS T-SHIRT 254
1214 593935_592435 SS T-SHIRT 254
7022 1572472 T-SHIRT 338
7022 1572472 T-SHIRT 338
7022 1572472 T-SHIRT 338
Используя данные выше, я хотел бынапример, создать переменную style_serial, которая выглядит следующим образом:
fact_code style_ item buyer style_serial
1206 -23 LADIES TANK TOP 652 1
1206 -23 LADIES TANK TOP 652 1
1206 -23 LADIES TANK TOP 652 1
1214 593935_592435 SS T-SHIRT 254 2
1214 593935_592435 SS T-SHIRT 254 2
1214 593935_592435 SS T-SHIRT 254 2
7022 1572472 T-SHIRT 338 3
7022 1572472 T-SHIRT 338 3
7022 1572472 T-SHIRT 338 3
То есть создать переменную, которая принимает уникальное значение, сгруппированное по столбцам fact_code, style_, item и customer.Я пробовал следующий код R, используя пакет dplyr
:
df <- df %>%
dplyr::group_by(fact_code, style_, buyer) %>%
dplyr::mutate(style_serial = 1:n())
, где df
- имя вышеприведенного примера фрейма данных.Но это дает мне неожиданный вывод:
fact_code style_ item buyer style_serial
1206 -23 LADIES TANK TOP 652 1
1206 -23 LADIES TANK TOP 652 2
1206 -23 LADIES TANK TOP 652 3
1214 593935_592435 SS T-SHIRT 254 1
1214 593935_592435 SS T-SHIRT 254 2
1214 593935_592435 SS T-SHIRT 254 3
7022 1572472 T-SHIRT 338 1
7022 1572472 T-SHIRT 338 2
7022 1572472 T-SHIRT 338 3
Я бы не возражал, если бы style_serial был рандомизированным набором целых чисел, чтобы данные выглядели так:
fact_code style_ item buyer style_serial
1206 -23 LADIES TANK TOP 652 10
1206 -23 LADIES TANK TOP 652 10
1206 -23 LADIES TANK TOP 652 10
1214 593935_592435 SS T-SHIRT 254 2
1214 593935_592435 SS T-SHIRT 254 2
1214 593935_592435 SS T-SHIRT 254 2
7022 1572472 T-SHIRT 338 100
7022 1572472 T-SHIRT 338 100
7022 1572472 T-SHIRT 338 100
Toсгенерировав таблицу выше, я запускаю следующий R
код:
df <- df %>%
dplyr::group_by(fact_code, style_, buyer) %>%
dplyr::mutate(style_serial = sample(1:6000, n(), replace = FALSE))
Однако я не могу получить желаемый результат.
Основная цель - создать в этом случае переменную style_serial, которая принимает уникальные значения, сгруппированные по определенному количеству столбцов, т.е. в этом случае fact_code, style_, item и покупатель.
Любая помощь будет оценена.