如何在R中使用百分位数(quantile)对变量值进行分类的函数?

“数据”是data.frame,具有10个数字变量。我想将所有变量作为6个百分位数组的分类变量(在5%以下,5%〜25%之间,25%〜50%之间,50%〜75%之间,75%〜95%之间,95%以上) ) 我想用一个函数来实现它,以便可以将所有变量归为一类。

我只能在没有以下功能的情况下执行此操作,因此我必须一遍又一遍地重复相同的代码。

 <script>
  function f() {
    $('#some_element').text('Signing you in...');
    player_name = $('.some_place').val();
    logged = 1;
  }
 </script>
 <body onload="setTimeout(f,500)">

我用lapply()和function(data,name)尝试了一些代码

m1<- quantile(data$val,0.05)
m2<- quantile(data$val,0.25)
m3<- quantile(data$val,0.5)
m4<- quantile(data$val,0.75)
m5<- quantile(data$val,0.95)

data$val[data$val<m1]  = "below0.05"
data$val[data$val>= m1& data$val<m2 ]  = "0.05to0.25"
data$val[data$val>= m2& data$val<m3 ]  = "0.25to0.5"
data$val[data$val>= m3& data$val<m4 ]  = "0.5to0.75"
data$val[data$valT>= m4& data$val<m5 ]  = "0.75to0.95"
data$val[data$val>= m5]  = "upper0.95"

data$val <-as.factor(data$val)

它仅在整个过程中起作用。我想知道如何做对。另外,我想知道如何在此处应用“ lapply()”,以便可以轻松地对所有变量进行分类。请任何人帮助!

fun =function(data,name) {
  y <-get(name,data)
   m1<- quantile(name,data,0.05)
   m2<- quantile(name,0.25)
   m3<- quantile(name,0.5)
   m4<- quantile(name,0.75)
   m5<- quantile(name,0.95)
   RB = rbind(m1,m2,m3,m4,m5)
   dimnames(RB)[[2]] = "Value"

   name$data[ name$data<m1]  = "below0.05"
   name$data[ name$data>= m1& name$data<m2 ]  = "0.05to0.25"
   name$data[ name$data>= m2& name$data<m3 ]  = "0.25to0.5"
   name$data[ name$data>= m3& name$data<m4 ]  = "0.5to0.75"
   name$data[ name$data>= m4& name$data<m5 ]  = "0.75to0.95"
   name$data[ name$data>= m5]  = "upper0.95"

   name$data <-as.factor(name$data)
}

使用调试重新运行

xiacy83 回答:如何在R中使用百分位数(quantile)对变量值进行分类的函数?

我们可以使用cut使用breaks将数据划分为quantile并使用lapply将其应用于多列。因此,类似的方法应该适用于前10列。

lapply(df[1:10],function(x) cut(x,breaks = c(-Inf,quantile(x,c(0.05,0.25,0.5,0.75,0.95))),labels = c("below0.05","0.05to0.25","0.25to0.5","0.5to0.75","0.75to0.95")))
本文链接:https://www.f2er.com/3161844.html

大家都在问