Ntile和十分位函数取决于R中的两列

时间:2019-01-28 11:03:11

标签: r group-by

我想在Ntile中增加一个新列,但该列应取决于第1列-“年份”,并显示第2列的Ntile编号-“里程”。

  year mileage
  <dbl>   <dbl>
1  2011    7413
2  2011   10926
3  2011    7351
4  2011   11613
5  2012    8367
6  2010   25125

mydata$Ntile <- ntile(mydata$mileage, 10)

我知道易于使用的功能ntile,但是我不知道如何使它依赖于2列。我想使用ntiles作为里程数,但要在新列“ Ntile”中计算2010、2011和2012年的年增长率。

PS:我知道没有足够的数据来计算2011和2012年的Ntiles,这只是一个例子。

1 个答案:

答案 0 :(得分:0)

我喜欢data.table方法:

@RequestMapping(value = "/api/brand/add", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseDTO createBrand(@RequestBody Brand brand) {
        ResponseDTO responseDTO = new ResponseDTO();
        Random rand = new Random();
        try {
            List<String> brandNames = brandService.findAllBrandNames();
            System.out.println(brandNames.toString());
            if (brandNames.contains(brand.getName())) {
                responseDTO.setCode(ErrorCode.error_1100);
                responseDTO.setMessage(ErrorCode.error_msg1100);

            } else {
                brand.setBrandId("HSB" + rand.nextLong());
                String brandId = valid.generateBrandId(brand.getBrandId());
                if (brandId.contains("-")) {
                    brandId = brandId.replace("-", "").trim();
                }
                brand.setBrandId(brandId);
                brand.setActive(true);
                brand.setDeleted(false);
                brand.setCreatedOn(new Date(cal.getTime().getTime()));
                brand.setCreatedBy("vendor");
                brand.setModifiedOn(new Date(cal.getTime().getTime()));
                brand.setModifiedBy("vendor");
                brandService.save(brand);
                responseDTO.setCode(ErrorCode.error_0);
                responseDTO.setMessage("Created brand successfully.");
                responseDTO.setData(brandId);

            }

        } catch (Exception e) {
            responseDTO.setCode(ErrorCode.error_1101);
            responseDTO.setMessage(ErrorCode.error_msg1101);
            return responseDTO;
        }
        return responseDTO;

    }

最好!