gpt4 book ai didi

r - 如何将具有离散值范围的数值向量转换为一个因子?

转载 作者:行者123 更新时间:2023-12-04 15:12:44 27 4
gpt4 key购买 nike

我正在尝试将具有离散值的数值向量转换为 R 中的一个因子。

x <- c(1,2,3,4,8,9,10,88,89,90)

我需要将此向量转换为具有 4 个级别的因子变量,如下所示:

1,2(级别 1)

3,4(二级)

8,9,10(3 级)

88,89, 90(4级)

我试过在 R 中使用 factor 如下:

y <- factor(x, levels = c(1:2, 3:4, 8:10, 88:90))

这将返回一个具有 10 个水平的因子,而不是我想要的具有 4 个水平的因子。

str(y)
Factor w/ 10 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10

我也试过使用 cut 如下:

bins <-  c(1,3,5,8,11,88,90)
y <- cut(x, breaks = bins, right = F, include.lowest = T)
table(y)

这也不会返回所需的结果,因为它会为我不需要的 [5-8) 和 [11-88) 等范围创建级别。

y
[1,3) [3,5) [5,8) [8,11) [11,88) [88,90]
2 2 0 3 0 3

有没有办法将一系列数值转换为 R 中的一个因子?

最佳答案

删除未使用的级别:

# as per your code    
bins <- c(1,3,5,8,11,88,90)
y <- cut(x, breaks = bins, right = FALSE, include.lowest = TRUE)
levels(y)
# [1] "[1,3)" "[3,5)" "[5,8)" "[8,11)" "[11,88)" "[88,90]"

# drop unused levels
y1 <- droplevels(y)
levels(y1)
#[1] "[1,3)" "[3,5)" "[8,11)" "[88,90]"

关于r - 如何将具有离散值范围的数值向量转换为一个因子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64920608/

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