【问题标题】:How to create an automated range for dummy in R?如何在 R 中为虚拟对象创建自动范围?
【发布时间】:2021-03-27 05:55:55
【问题描述】:

我有以下 DF,我想创建一个具有自动比例的假人,以明确表示一个城市是有小公司、中等公司还是有很多公司。

cities sum of companies
CTY A 199
CITY B 358
CITY C 250
CITY D 1265
CITY E 610

我尝试了以下代码:

#install.packages("scales")
library(scales)

    COMP_SCALES<- breaks_extended() #from packages Scales
    COMP_A<-COMP_SCALES(df[2], n =4)
    COMP_A <- cut(df[2], 
                          breaks=c(-Inf, COMP_A[2],COMP_A[3],COMP_A[4], Inf), 
                          labels=c("LITTLE","MEDIUM","A LOT OF","+ A LOT OF"))

但是,一旦所有城市都在小范围内,自动计算的比例就不是很合适了。如何更好地自动化此代码?

最后的目的是创建一个表格以更好地可视化结果,如下所示:

COMP_A_CLUSTER <- as.data.frame.matrix(table(COMP_A,kmeans.k$cluster))

预期结果: 城市 A 应该放在“Little”上。 城市 B 和 C 应放在“”。 城市 E 应该放在“很多”上。 D市应该放在“+很多”上。

我有一个包含 10,000 多个城市和 100 多个列的列表来执行类似的过程,这就是为什么我希望自动计算虚拟对象的规模。

【问题讨论】:

    标签: r cluster-analysis dummy-variable dummy-data


    【解决方案1】:

    如果您知道每个类别的结束(右)边界是什么,您就可以编写自己的函数。下面是一个简单的例子。 DF 有一个新栏目“CatCities”,里面有你想要的。

    有以下假设

    • sum.of.companies 的最小值大于或等于 0
    • sum.of.companies 的最大值为 10000(您可以更改)
    • 函数参数中的“CategoryList”严格递增(从最低到最高),参数“EndPoints”也是如此
    • 函数调用中参数“CategoryList”和“EndPoints”的向量长度相等
    DF <- read.csv("./SomeDF.csv")
    ClassifyRange <- function(x, CategoryList=c("Little","Medium","a lof of","+a lot of"),EndPoints=c(250,500,1000,10000)){
      Index <- which((EndPoints -x) >= 0)
      return(CategoryList[Index[1]])
    }
    
    DF$CatCities <- lapply(DF$sum.of.companies, FUN=ClassifyRange)
    

    它产生以下输出

    【讨论】:

      【解决方案2】:

      您可以使用quantile 来选择每个间隔具有相同数量的样本。默认情况下,quantile 分为 4 个间隔 (probs = seq(0, 1, 0.25)),但您可以为 probs 参数指定不同的间隔。

       COMP_A <- cut(df[,2], 
                     breaks=quantile(df[,2]), 
                     labels=c("LITTLE","MEDIUM","A LOT OF","+ A LOT OF"))
      

      【讨论】:

        猜你喜欢
        • 2021-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-12
        • 2014-02-04
        • 2014-10-29
        • 1970-01-01
        相关资源
        最近更新 更多