使用data.table的行均值和标准差

时间:2019-10-31 11:23:16

标签: r data.table

x <- matrix(rnorm(500 * 10), nrow = 500, ncol = 10)
x[, 1] <- 1:500

x <- data.frame(x)
names(x) <- c('ID', 2000:2008)      

library(data.table)
setDT(x)

我想计算平均值,sd和否。每行数据点数,但出现错误

x[, c("meanY",'sdY',"nY") := .(rowMeans(.SD, na.rm = TRUE), sd(.SD, na.rm = TRUE), rowSums(!is.na(.SD))), .SDcols=c(2:10)]

2 个答案:

答案 0 :(得分:0)

假设输出为列表,您可以使用以下代码进行尝试:

var source = new HwndSource(new HwndSourceParameters())
{
    RootVisual = this
};

它应与您的op <- c("mean","sd","length") r <- lapply(op, function(v) apply(x, 1, eval(parse(text = v)))) names(r) <- op 示例一起使用:

data.frame

答案 1 :(得分:0)

问题出在sd()上,无法逐行工作。

x[,
  c("meanY",'sdY',"nY") := 
    .(rowMeans(.SD, na.rm = TRUE), 
      apply(.SD, 1, sd, na.rm = TRUE), 
      rowSums(!is.na(.SD))), 
  .SDcols = 2:10]