![](/img/trans.png)
[英]Filter in group_by + mutate not working as in group_by + summarise in dplyr R
[英]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.