簡體   English   中英

dplyr group_by() with summarise() not working as *I* exoect

[英]dplyr group_by() with summarise() not working as *I* exoect

我意識到這是操作員錯誤,但我一直在搜索文檔和此站點以尋找答案,但我無法弄清楚。

這是我的數據:

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")

看起來像這樣:

在此處輸入圖像描述

我的目標是 select 只有一個 ID,然后為其創建一個隨機變量,因此每個 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))

但這給了我這個:

在此處輸入圖像描述

懷疑這是因為 n() 但我嘗試了 length()、nrow()、count() 並且無法讓它工作。 因此,這揭示了我對 tidyverse 更根本的非理解。

謝謝!

感謝@akrun,正確的代碼是:

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

我忽略了這樣一個事實,即我后來想將 n() 的值用於其他事情,但這里可能有更好的方法來做到這一點。

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM