【问题标题】:Grouping column values based on conditions in R根据 R 中的条件对列值进行分组
【发布时间】:2017-10-25 03:15:19
【问题描述】:

我有一个数据集,其中 1 列中有 142 个唯一值。作为构建预测模型的一部分,我想为该列创建虚拟变量。但是,我不是创建 142 个虚拟变量,而是首先要将与响应变量表现相似的值组合在一起。我使用的代码如下所示

round(tapply(train_data$Price,train_data$Suburb,mean),0)

这为我提供了数组中的 142 个不同元素,如果我手动查找相似值,这将非常耗时。我的输出的 sn-p 粘贴在下面:

round(tapply(train_data$Price,train_data$Suburb,mean),0)
        Abbotsford         Aberfeldie       Airport West 
           1057934            1235150             707542 
       Albert Park             Albion         Alphington 
           1919014             547711            1188880 
            Altona       Altona North           Armadale 
            757866             728127            1542430 
        Ascot Vale          Ashburton            Ashwood 
            968702            1595275            1049184 
  Avondale Heights          Balaclava             Balwyn 
            792321             675133            1912896 
      Balwyn North          Bellfield          Bentleigh 
           1769984             798778            1282869 
    Bentleigh East           Box Hill          Braybrook 
           1038886            1138650             646845 
          Brighton      Brighton East           Brooklyn 
           1864928            1607299             542182 
         Brunswick     Brunswick East     Brunswick West 
            952350             874927             744986 
           Bulleen            Burnley            Burwood 
           1142944            1150902            1167023 
        Camberwell      Campbellfield         Canterbury 
           1761263             447600            2284188 
           Carlton      Carlton North           Carnegie 
           1062721            1436615             915587 
         Caulfield     Caulfield East    Caulfield North 
            981417            1099000            1055575 
   Caulfield South          Chadstone       Clifton Hill 
           1119571            1007909            1049742 
            Coburg       Coburg North        Collingwood 
            851215             770902             858415 
          Cremorne          Docklands          Doncaster 
            943731             937500            1210059 
         Eaglemont     East Melbourne        Elsternwick 

如何编写代码,根据条件对所有值进行分组,例如平均值介于 600000-699999、700000-799999 等之间?

【问题讨论】:

  • 没有全貌的数据很难回答。您应该添加reproducible example。您还应该查看?cut R 函数,因为它可能适用于您的问题。
  • 用一种简单的方式说,在上面的输出中我已经粘贴了我只想要那些平均值落在特定范围内的列值,比如 600000-700000 等等。希望我能正确解释

标签: r group-by tapply


【解决方案1】:

我得到了完全符合我的目的的代码

subset(aggregate( Price ~ Suburb, 
                  train_data, 
                  function(x) ifelse (mean(x)>600000 & mean(x)<700000 ,1,0) ),Price=="1")

【讨论】:

    猜你喜欢
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 2017-10-19
    • 2017-01-27
    • 1970-01-01
    相关资源
    最近更新 更多