【问题标题】:Grouping and the adding column to a data.table分组并将列添加到 data.table
【发布时间】:2020-10-08 17:15:37
【问题描述】:

我有一个包含几列的数据表:

Sub_Sample <- select(Sample,Month,permno,Return,ExcessReturn,MktCapFirm,Size,MktCapStock,Momentum,
                 BM,lnBM,Beta)

我想按 0.5% 和 0.995% 每月对 MktCapFirm 列进行缩尾处理。因此,对于 MktCap 列中的每个值,我想根据给定月份值的 0.05% 和 0.995% 对其进行微调。我正在使用以下代码:

Sub_Sample<-Sub_Sample[,list(MktCapFirm_Win = Winsorize(MktCapFirm,probs = c(0.005, 0.995), na.rm = T)),by=c("Month")]

但这仅返回两列,而我想将 MktCapFirm_Win 列添加到我原来的 Sub_Sample data.table 中。

任何帮助表示赞赏!

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    您需要海象:= 赋值与数据表:

    Sub_Sample[ , MktCapFirm_Win := Winsorize(MktCapFirm, probs=c(0.005, 0.995), na.rm = T)), by=c("Month")]
    

    【讨论】:

    • 是的。 list(newvar = calculation), by=byvar 样式将您的数据聚合到一个新的“折叠”数据集中,而 newvar := calculation, by=byvar 样式将 newvar 添加到当前数据集,而不更改当前数据集的任何内容。
    【解决方案2】:

    dplyr 的选项

     library(dplyr)
     Sub_Sample %>%
         group_by(Month) %>%
         mutate(MktCapFirm_Win = Winsorize(MktCapFirm, probs=c(0.005, 0.995),
               na.rm = TRUE))
    

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 2012-08-16
      • 2022-01-04
      • 1970-01-01
      相关资源
      最近更新 更多