【发布时间】: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))
【问题讨论】:
-
您好 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