gpt4 book ai didi

r - 如何使用 dplyr 对 x 中的元素进行分组,在 y 的间隔内计算 x 的频率?

转载 作者:行者123 更新时间:2023-12-04 10:17:45 24 4
gpt4 key购买 nike

x<- c('a','v','c','a','d','e','g','f','h','y','u','r','s','w','s','d','g','j','u','r','s','s','s','v','b','g','e','w','s','d','g','h','j','i','t','e','w','w','q','q','d','v','b','m','m','k','l','u','p','o','r','t','n','e','w','w','j','f','c','g','h','t','r','d','e','w','w','w','z','f','g','f','h','h','y','r','f','f','l')

y <- sample(1:40, 79, replace=T)

y1 38 18 19 19 37 38 26 4 32 23 11 24 36 15 22 19 6 24 13 36 2 26 35 39 8 33 20 19 23 28 5 17 40 26 18 21[37] 35 23 27 12 3 33 16 32 11 19 4 5 8 19 5 19 33 33 33 13 12 32 21 4 14 8 28 34 33 22 34 19 39 23 6 8[73] 37 17 21 16 38 15 36


enter image description here
我有两个变量 'x' 和 'y' 。在 'x' 中有不止一个观察实例。 y 中的值对应于“x”中的每个观察值
我想实现分组并将 y 值划分为区间。
换句话说,一个字母出现的次数将被划分为根据每次出现时分配给该字母的值指定的间隔。
例子 :-
enter image description here
无法正确表示表格,因为我找不到更好的方式在此处输入。
我希望很清楚。如果需要,我将尝试重申它。
我将不胜感激在这方面的任何帮助。

最佳答案

使用 dplyr

library(dplyr)
library(tidyr)

res <- tally(group_by(df, x, y=cut(y, breaks=seq(0,40, by=10)))) %>%
ungroup() %>%
spread(y,n, fill=0)

或使用 data.table
library(data.table)
res1 <- dcast.data.table(setDT(df)[,list(.N),
by=list(x, y1=cut(y, breaks=seq(0,40, by=10)))],
x~y1, value.var="N", fill=0L)

all.equal(as.data.frame(res), as.data.frame(res1))
#[1] TRUE

注意:有一个 label参数在 cut所以如果你想拥有 column标题要 freq0-10 , 等等
 tally(group_by(df, x, y=cut(y,breaks=seq(0,40, by=10),
labels=paste0("freq", c("0-10", "10-20", "20-30", "30-40"))))) %>%
ungroup() %>%
spread(y,n, fill=0) %>%
head(2)

# x freq0-10 freq10-20 freq20-30 freq30-40
#1 a 0 1 1 0
#2 b 1 1 0 0

数据
 df <-  structure(list(x = structure(c(1L, 22L, 3L, 1L, 4L, 5L, 7L, 6L, 
8L, 24L, 21L, 18L, 19L, 23L, 19L, 4L, 7L, 10L, 21L, 18L, 19L,
19L, 19L, 22L, 2L, 7L, 5L, 23L, 19L, 4L, 7L, 8L, 10L, 9L, 20L,
5L, 23L, 23L, 17L, 17L, 4L, 22L, 2L, 13L, 13L, 11L, 12L, 21L,
16L, 15L, 18L, 20L, 14L, 5L, 23L, 23L, 10L, 6L, 3L, 7L, 8L, 20L,
18L, 4L, 5L, 23L, 23L, 23L, 25L, 6L, 7L, 6L, 8L, 8L, 24L, 18L,
6L, 6L, 12L), .Label = c("a", "b", "c", "d", "e", "f", "g", "h",
"i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u",
"v", "w", "y", "z"), class = "factor"), y = c(12L, 9L, 29L, 21L,
27L, 37L, 12L, 31L, 33L, 11L, 25L, 15L, 27L, 27L, 13L, 37L, 8L,
2L, 21L, 6L, 4L, 23L, 30L, 6L, 9L, 28L, 4L, 24L, 26L, 2L, 13L,
10L, 15L, 6L, 38L, 9L, 30L, 26L, 28L, 39L, 19L, 16L, 11L, 9L,
2L, 4L, 16L, 15L, 11L, 14L, 19L, 35L, 19L, 29L, 22L, 40L, 19L,
12L, 7L, 6L, 20L, 10L, 12L, 6L, 30L, 13L, 38L, 39L, 30L, 20L,
6L, 9L, 1L, 40L, 26L, 14L, 23L, 33L, 2L)), .Names = c("x", "y"
), row.names = c(NA, -79L), class = "data.frame")

关于r - 如何使用 dplyr 对 x 中的元素进行分组,在 y 的间隔内计算 x 的频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26688494/

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