你能幫我理解為什么如果我這樣做: summarize(Mode=Test1(time, na.rm = TRUE),.groups = 'drop')在下面的代碼中,它不起作用嗎?我剛插入na.rm=TRUE
library(dplyr)
Test <- structure(
list(date = c("2021-11-01","2021-11-02","2021-11-10"),
Week= c("Wednesday","Wednesday","Thursday"),
time = c(5,4,0)),
class = "data.frame", row.names = c(NA, -3L))
Test1 <- function(t) {
s <- table(as.vector(t))
names(s)[s == max(s)]}
Test2<-Test%>%
group_by(Week = tools::toTitleCase(Week)) %>%
summarize(Mode=Test1(time),.groups = 'drop')
> Test2
Week Mode
1 Thursday 0
2 Wednesday 4
3 Wednesday 5
uj5u.com熱心網友回復:
如果我們想找到模式,請使用 Mode
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
現在它應該可以作業了
Test%>%
group_by(Week = tools::toTitleCase(Week)) %>%
summarize(Mode=Mode(time),.groups = 'drop')
# A tibble: 2 × 2
Week Mode
<chr> <dbl>
1 Thursday 0
2 Wednesday 5
如果我們想插入na.rm,它應該是函式的一個引數,并且max也應該有那個引數
Test1 <- function(t, rm_na) {
s <- table(as.vector(t))
names(s)[s %in% max(s, na.rm = rm_na)]
}
并將該函式用作
Test %>%
group_by(Week = tools::toTitleCase(Week)) %>%
summarize(Mode=Test1(time, TRUE),.groups = 'drop')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/350442.html
標籤:r
上一篇:R在組內跨行連接但保留序列
