计算数据框中某些列的标准偏差

Mic*_*sch 4 statistics r dataframe

我有一个 120 行和 265 列的数据框。从第 5 列到第 265 列的单元格包含一个数值。

对于每一行,我想计算从第 5 列到第 265 列(第 5 列、第 7 列、第 9 列等)的每个奇数列的值的标准偏差,并将其写入相应行的第 266 列。

我现在用 apply 函数和 for 循环苦苦挣扎了两个小时,但我得到的只是我无法理解的错误消息。

akr*_*run 5

你可以试试

df$newCol <- apply(df[seq(5, ncol(df), by=2)], 1, sd)
Run Code Online (Sandbox Code Playgroud)

或使用rowSdsmatrixStats

library(matrixStats)
df$newCol <-  rowSds(as.matrix(df[seq(5, ncol(df), by=2)]))
Run Code Online (Sandbox Code Playgroud)

或者正如@DavidArenburg 所评论的,您可以检查矢量化 RowSD

数据

set.seed(253)
df <- cbind(as.data.frame(matrix(sample(letters, 120*4, replace=TRUE),
  ncol=4), stringsAsFactors=FALSE), matrix(sample(1:50, 120*261, 
 replace=TRUE), ncol=261))
Run Code Online (Sandbox Code Playgroud)

  • 你也可以试试我的超棒(矢量化)[`RowSD`](https://gist.github.com/DavidArenburg/cca995ec1709c0d4735d) :) (2认同)