相关疑难解决方法(0)

使用`by = .I`在data.table中进行行操作

这是关于行操作的一个很好的解释data.table

我想到的另一种选择是id为每一行使用唯一的,然后使用by参数应用一个函数.像这样:

library(data.table)

dt <- data.table(V0 =LETTERS[c(1,1,2,2,3)],
                 V1=1:5,
                 V2=3:7,
                 V3=5:1)

# create a column with row positions
dt[, rowpos := .I]

# calculate standard deviation by row
dt[ ,  sdd := sd(.SD[, -1, with=FALSE]), by = rowpos ] 
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 有没有理由不使用这种方法?也许其他更有效的替代品?

  2. 为什么使用by = .I不起作用?

    dt[ , sdd := sd(.SD[, -1, with=FALSE]), by = .I ]

r data.table

13
推荐指数
1
解决办法
3662
查看次数

标签 统计

data.table ×1

r ×1