【问题标题】:temporary column name in data.tabledata.table 中的临时列名
【发布时间】:2017-06-07 05:03:11
【问题描述】:

我想在像mean这样的列表达式之后为data.table的列提供自定义但临时的名称(即,我不想使用“:=”更改data.table)。我看过一些使用 eval 函数的例子,但我想在一行代码中做到这一点。我们该怎么做?谢谢!

我有这个数据

steps.dt = data.table(steps=rep(0:2, each=3), 
date=as.factor(rep(c("10/2/2012", "10/3/2012", "10/4/2012"), each = 3)), interval = as.factor(rep(c(0,5,10), each = 3)))

steps.dt

   steps      date interval
1:     0 10/2/2012        0
2:     0 10/2/2012        0
3:     0 10/2/2012        0
4:     1 10/3/2012        5
5:     1 10/3/2012        5
6:     1 10/3/2012        5
7:     2 10/4/2012       10
8:     2 10/4/2012       10
9:     2 10/4/2012       10

现在,当我计算时意味着只了解数据而不是修改它

steps.dt[,mean(steps), by = interval]
   interval V1
1:        0  0
2:        5  1
3:       10  2

我在名为“V1”的列下得到结果。我想给它一个自定义名称,例如“steps.mean”,而无需在列表达式中使用“:=”来更改数据表。

【问题讨论】:

  • J 表达式中的列命名为:steps.dt[, .(steps.mean = mean(steps)), by = interval]
  • 谢谢@SymbolixAU!我不知道。可以在 J expr 中像这样使用。请。回复,我会接受...

标签: r data.table


【解决方案1】:

要在计算中命名列,您只需在J 表达式中设置名称

steps.dt[, .(steps.mean = mean(steps)), by = interval]

要仅显示平均列,您可以将表达式链接到末尾以仅显示感兴趣的列

steps.dt[, .(steps.mean = mean(steps)), by = interval][, .(steps.mean)]
## or, if you only want a vector of values returned, don't use the .()
# steps.dt[, .(steps.mean = mean(steps)), by = interval][, steps.mean]

【讨论】:

  • 在相关说明中 - 我们如何仅显示 steps.mean col 而没有间隔?我想将它传递给 hist 函数,所以我只想要手段......
  • 您可能想要[['steps.mean']](访问值,而不是单列data.table。)
【解决方案2】:

我们可以通过base R 做到这一点

aggregate(steps~interval, steps.dt, mean)

【讨论】:

    猜你喜欢
    • 2021-06-14
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多