【问题标题】:Is there a one-liner to create a factor from a numeric vector of level indices?是否有一种方法可以从水平索引的数字向量创建一个因子?
【发布时间】:2019-08-01 17:45:34
【问题描述】:

我经常不得不采用一组指标向量,并希望从中创建一个因子以更轻松地探索数据。我总是通过实例化因子然后将级别分配给它来完成此操作,其中组指标是级别的索引(也许在下面更容易看到)。但是,由于因子是我最不了解的数据类型,我想知道是否有一个简单的函数可以为我完成这一切,而我不知道。

# set seed so we're all on the same page
set.seed(1337)
# create the contrived vector of indices
myNumbers <- sample(x = 1:26, size = 50, replace = TRUE)

# This is how I would create the factor
myFactor <- factor(myNumbers)          # step 1
levels(myFactor) <- letters            # step 2

# Inspect the result
myFactor

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以在从vector 创建factor 时指定levels

    foo = factor(x = letters[myNumbers], levels = letters)
    length(levels(foo))
    #[1] 26
    

    如果您在创建factor时没有指定levels,则会从vector的唯一值中自动分配一个

    length(levels(myFactor))  #before step 2
    #[1] 21
    

    表示在第 2 步之前,myFactor 中因子的数值范围为 1 到 21(range(as.numeric(myFactor)))。因此,即使您打算使用来自1:26 的索引,您也将使用来自1:21 的索引。

    【讨论】:

    • 哇。这非常明显。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    相关资源
    最近更新 更多