gpt4 book ai didi

r - 如何从数据创建包含零计数的类列表?

转载 作者:行者123 更新时间:2023-12-03 18:32:05 24 4
gpt4 key购买 nike

给定一些像x = 10.08506, 10.32809, ...这样的随机数据,我该如何高效地创建分类列表?结果(请参阅下面的可重现示例)应如下所示

classes         n
(10,10.1] 3
(10.1,10.2] 1
(10.2,10.3] 0
(10.3,10.4] 2
(10.4,10.5] 3
(10.5,10.6] 0
(10.6,10.7] 0
(10.7,10.8] 1
这是一个可重现的示例,它显示了迄今为止最简单的方法:我可以去掉 data.frame dffull_join 吗?也许,我也可以摆脱 br, h
library(dplyr)
set.seed(1)
number_of_observations <- 10
nbr <- 10

x <- rnorm(n = number_of_observations, mean = 10.273, sd = 0.3)
br <- seq(from = ceiling(min(nbr*x)-1)/nbr,
to = floor(max(nbr*x)+1)/nbr, by = 1/nbr)
h <- hist(x, breaks = br)

df <- tibble(
classes = h$mids)
df <- df %>%
mutate(classes = cut(classes, breaks = br)) %>%
group_by(classes) %>%
mutate(n = n()) %>%
ungroup() %>%
mutate(freq = n / sum(n)) %>%
arrange(classes)

df2 <- tibble(
classes = x)
df2 <- df2 %>%
mutate(classes = cut(classes, breaks = br)) %>%
group_by(classes) %>%
mutate(n = n()) %>%
ungroup() %>%
mutate(freq = n / sum(n)) %>%
arrange(classes) %>%
distinct()

df <- df %>% full_join(df2, by = "classes")
df$n.y[is.na(df$n.y)] <- 0

result <- df[, c("classes", "n.y")]
colnames(result) <- c("classes", "n")
result

最佳答案

您可以使用 seqcuttableas.data.frame 在单行中执行此操作:

setNames(as.data.frame(table(cut(x, seq(10, 10.8, 0.1)))), c("classes", "n"))
#> classes n
#> 1 (10,10.1] 3
#> 2 (10.1,10.2] 1
#> 3 (10.2,10.3] 0
#> 4 (10.3,10.4] 2
#> 5 (10.4,10.5] 3
#> 6 (10.5,10.6] 0
#> 7 (10.6,10.7] 0
#> 8 (10.7,10.8] 1

关于r - 如何从数据创建包含零计数的类列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64262090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com