【问题标题】:How two decile bin continuous variables?如何将两个十分位 bin 连续变量?
【发布时间】:2020-04-01 05:10:19
【问题描述】:

我正在尝试将我的数据分成相等的 bin 并对其进行汇总,以查看是否存在与因变量相关的任何现有模式。在汇总数据时,我还想查看每个十分位数的变量的下限和上限。

我在R-中写了下面的代码

    telecom_final_Analyse<-read.csv("sampletelecomfinal.csv")
    col_name_final<-colnames(telecom_final_Analyse)

    Variable_profile<-vector("list",79) #I have 79 variables

    names(Variable_profile)<-col_name_final


    for (j in 1:79) {
      if(class(telecom_final_Analyse[,col_name_final[j]])=="numeric" || class(telecom_final_Analyse[,col_name_final[j]])=="integer"){

        telecom_final_Analyse%>%mutate(dec=ntile(telecom_final_Analyse[,col_name_final[j]],10))->telecom_final_Analyse

        z<-as.name(col_name_final[j])

        telecom_final_Analyse%>%group_by(dec)%>%summarise(n=sum(churn),N=n(),churn_percentage=n/N,greaterthan = min(z,na.rm=TRUE),lessthan=max(z,na.rm=TRUE))->Variable_profile[[col_name_final[j]]]

      }
      else{
        x<-as.name(col_name_final[j])
        telecom_final_Analyse%>%group_by_(x)%>%summarise(n=sum(churn),N=n(),churn_percentage=n/N)->Variable_profile[[col_name_final[j]]]

      }
    }

我收到以下错误 - min(z, na.rm = TRUE) 错误:参数的“类型”(符号)无效

以下是我用于一个变量以获得所需输出的代码以同样的方式,我想获得数据集中所有整数/数字变量的输出

telecom_final_Analyse%>%mutate(dec=ntile(telecom_final_Analyse$eqpdays ,10))->telecom_final_Analyse

telecom_final_Analyse%>%group_by(dec)%>%summarise(n=sum(churn),N=n(),churn_percentage=n/N,greaterthan=min(eqpdays,na.rm=TRUE),lessthan=max(eqpdays,na.rm=TRUE))

I am able to do it manually for 1 variable, this is the output I got. The same way I want for my other continuous variables as well

【问题讨论】:

  • 您好 Ajay,感谢您的提问并热烈欢迎您来到 StackOverflow 社区。我相信我可以帮助你解决你的问题。但是,请考虑您希望从花费空闲时间回答您的问题的人那里得到答案。在 StackOverflow 上,作为提问者提供可重现的示例(有时称为 reprex)是一种很好的做法stackoverflow.com/help/minimal-reproducible-example reprex 可以帮助其他人理解您的问题,也可以帮助有类似问题的人快速确定这个特定线程是否有用。
  • z 是符号类型的变量。它不是数字,因此您无法计算其平均值。给我们一些数据(10 - 20 个案例,3 - 5 个变量)并告诉我们你到底想要什么。如果您需要一个循环来执行此操作,我会感到非常惊讶。
  • @dcarlson 感谢您的回复。请使用来自 -drive.google.com/file/d/1vVCzKz7N0_jecTwRlz1Jyjdi4-7XLLgo/… 的示例数据集我想将所有连续变量分成 10 个十分位数,并按十分位数对它们进行分组并汇总以查看行数、流失总和(数据中的变量)、最小值和最大值每个十分位数的每个变量。请参考图片,我是为一个变量做的,我想为所有数字/整数变量获得相同类型的输出

标签: r dplyr data-analysis data-manipulation


【解决方案1】:

我没有运行这个(没有代表),但您可以使用 mutate_if(is.numeric,{a function},{some parameters}) 扩展单个变量的代码

见:https://dplyr.tidyverse.org/reference/mutate_all.html

所以试试... Telecom_final_Analyse%>%mutate_if(is.numeric, ntile, 10)

请注意,这将改变现有列。如果您想保留旧的并创建新的,您可以在“list(first_function, second_function)”中包装多个变异函数,然后输出数据集将比以前更宽。这一切都在在线帮助中。 希望这对你有用

【讨论】:

    猜你喜欢
    • 2016-02-24
    • 2023-02-14
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多