dplyr group_by () с summarize () не работает как * I * exoect - PullRequest
0 голосов
/ 05 августа 2020

Я понимаю, что это ошибка оператора, но я искал ответ в документации и на этом сайте и не могу его понять.

Вот мои данные:

df <-   structure(list(ID= c("A757EHpLOya", "A757EHpLOya", "A757EHpLOya", 
        "A757EHpLOya", "A757EHpLOya", "AcjfpLUXjwt", "AcjfpLUXjwt", "AcjfpLUXjwt", 
        "AcjfpLUXjwt", "AcjfpLUXjwt", "AcjfpLUXjwt", "AcjfpLUXjwt", "AcjfpLUXjwt", 
        "AcjfpLUXjwt", "AcjfpLUXjwt", "aHNXoYj7uNJ", "aHNXoYj7uNJ", "aHNXoYj7uNJ", 
        "aHNXoYj7uNJ", "aitNX6Qxkon", "aitNX6Qxkon", "As7tGowP84e", "As7tGowP84e", 
        "As7tGowP84e"), group= structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
        1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
        1L, 1L), .Label = c("1", "2", "3", "4", "5", "6"), class = "factor"), 
        year = c(2018, 2018, 2018, 2018, 2018, 2018, 2018, 
        2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 
        2018, 2018, 2018, 2018, 2018, 2018, 2018), sex = c("Female", 
        "Female", "Female", "Male", "Unknown Sex", "Female", "Female", 
        "Female", "Female", "Male", "Male", "Male", "Male", "Unknown Sex", 
        "Unknown Sex", "Female", "Female", "Female", "Male", "Female", 
        "Female", "Female", "Female", "Female"), agecat = structure(c(2L, 
        3L, 6L, 6L, 1L, 2L, 2L, 3L, 6L, 2L, 2L, 3L, 6L, 1L, 1L, 2L, 
        3L, 6L, 6L, 3L, 6L, 2L, 3L, 6L), .Label = c("1", "2", "3", 
        "4", "5", "6"), class = "factor"), value = c(10, 18, 30, 18, 
        16, 55, 89, 281, 418, 71, 35, 37, 295, 11, 189, 10, 37, 94, 
        53, 13, 12, 1, 3, NA)), row.names = c(NA, 24L), class = "data.frame")

Это выглядит так:

enter image description here

My goal is to select just one ID and then create a random variable for it, so there's ONE row for each ID:

mu = 0.25
sd = 0.05

IDmu <- data.frame(df %>% 
group_by(ID) %>%
summarise(p = rnorm(n(), mean=mu, sd=sd)) %>%
select(ID, p))

But this gives me this:

введите описание изображения здесь

Я подозреваю это из-за n (), но я пробовал length (), nrow (), count () и не могу заставить его работать. Итак, это свидетельствует о более фундаментальном непонимании тидиверсии с моей стороны.

Спасибо!

1 Ответ

0 голосов
/ 05 августа 2020

Благодаря @akrun правильный код:

IDmu <- data.frame(df %>% 
group_by(ID) %>%
summarise(p = rnorm(1, mean=mu, sd=sd)) %>%
select(ID, p))

Я упустил из виду тот факт, что позже я хочу использовать значение n () для чего-то другого, но, вероятно, есть лучший способ сделайте это здесь.

Спасибо!

...