«resp_rate» - это используемый объект, и если мы делаем с этим объектом, он работает.
library(statar)
library(dplyr)
resp_rate %>%
mutate(group_index2 = xtile(group_resp_rate, n=3))
# userid group_id group_resp_rate group_index2
#1 63775658 514 0.0315789 3
#2 64880613 514 0.0315789 3
#3 65051746 553 0.0035461 2
#4 66689882 554 0.0000000 1
#5 68839217 555 0.0038023 2
#6 70630920 555 0.0038023 2
#7 73773882 554 0.0000000 1
#8 74279814 524 0.0000000 1
#9 74461297 555 0.0038023 2
#10 74951919 553 0.0035461 2
#11 75523813 514 0.0315789 3
#12 75932923 554 0.0000000 1
#13 76678559 554 0.0000000 1
#14 77506998 554 0.0000000 1
#15 79261032 514 0.0315789 3
#16 79860954 555 0.0038023 2
#17 80016586 554 0.0000000 1
#18 81757979 515 0.0106383 3
#19 82565883 534 0.0000000 1
#20 82610815 513 0.0212766 3
Возможно, что OP загрузил данные, которые также включают атрибут group
, то есть ниже повторяет поведение, показанное в посте OP
resp_rate %>%
group_by(group_id) %>%
mutate(group_index2 = xtile(group_resp_rate, n=3))
# A tibble: 20 x 4
# Groups: group_id [8]
# userid group_id group_resp_rate group_index2
# <int> <int> <dbl> <int>
# 1 63775658 514 0.0316 1
# 2 64880613 514 0.0316 1
# 3 65051746 553 0.00355 1
# 4 66689882 554 0 1
# 5 68839217 555 0.00380 1
# 6 70630920 555 0.00380 1
# 7 73773882 554 0 1
# 8 74279814 524 0 1
# 9 74461297 555 0.00380 1
#10 74951919 553 0.00355 1
#11 75523813 514 0.0316 1
#12 75932923 554 0 1
#13 76678559 554 0 1
#14 77506998 554 0 1
#15 79261032 514 0.0316 1
#16 79860954 555 0.00380 1
#17 80016586 554 0 1
#18 81757979 515 0.0106 1
#19 82565883 534 0 1
#20 82610815 513 0.0213 1
В таких случаях, сделайте ungroup
, а затем выполните mutate
resp_rate %>%
ungroup %>%
mutate(group_index2 = xtile(group_resp_rate, n=3))
Когда мы извлекаем столбец как вектор и применяем к нему xtile
, атрибут отсутствует, и именно поэтому работает автономный код
данные
resp_rate <- structure(list(userid = c(63775658L, 64880613L, 65051746L, 66689882L,
68839217L, 70630920L, 73773882L, 74279814L, 74461297L, 74951919L,
75523813L, 75932923L, 76678559L, 77506998L, 79261032L, 79860954L,
80016586L, 81757979L, 82565883L, 82610815L), group_id = c(514L,
514L, 553L, 554L, 555L, 555L, 554L, 524L, 555L, 553L, 514L, 554L,
554L, 554L, 514L, 555L, 554L, 515L, 534L, 513L), group_resp_rate = c(0.0315789,
0.0315789, 0.0035461, 0, 0.0038023, 0.0038023, 0, 0, 0.0038023,
0.0035461, 0.0315789, 0, 0, 0, 0.0315789, 0.0038023, 0, 0.0106383,
0, 0.0212766)), class = "data.frame", row.names = c(NA, -20L))