Я пытаюсь group_by
, найти первое появление строки, которая соответствует критерию, и создать новый столбец со значением, основанным на выбранной строке из каждой группы.
Пример
Это легко продемонстрировать на примере. Новый столбец должен быть сгенерирован с помощью
- с группированием по транзакции_id
- в поисках первого появления icecream_bool (= 1) (обратите внимание, что вторая транзакция имеет две строки, соответствующие этому критерию, поэтому первое должно быть взято)
- создание нового столбца с использованием значения, расположенного в столбце 'item'
Мы начнем с этого data.frame
df <- data.frame(
transaction_id=as.integer(c(1,1,1,2,2,2,2,2,3,3,3)),
item=as.character(c("crisps", "magnum", "gum",
"jerky", "cheese", "snickers", "ben&jerry", "magnum",
"halo", "crisps", "mars")),
icecream_bool=as.integer(c(0,1,0,
0,0,0,1,1,
1,0,0)),
stringsAsFactors = F
)
# transaction_id item icecream_bool
# 1 1 crisps 0
# 2 1 magnum 1
# 3 1 gum 0
# 4 2 jerky 0
# 5 2 cheese 0
# 6 2 snickers 0
# 7 2 ben&jerry 1
# 8 2 magnum 1
# 9 3 halo 1
# 10 3 crisps 0
# 11 3 mars 0
Желаемый вывод
Генерировать столбец ice_cream примерно так
transaction_id item icecream_bool ice_cream
1 1 crisps 0 magnum
2 1 magnum 1 magnum
3 1 gum 0 magnum
4 2 jerky 0 ben&jerry
5 2 cheese 0 ben&jerry
6 2 snickers 0 ben&jerry
7 2 ben&jerry 1 ben&jerry
8 2 magnum 1 ben&jerry
9 3 halo 1 halo
10 3 crisps 0 halo
11 3 mars 0 halo