【发布时间】:2015-04-29 06:04:45
【问题描述】:
我有一个包含 120 行和 265 列的数据框。第 5 列到第 265 列的单元格包含一个数值。
对于每一行,我想计算从第 5 列到第 265 列(第 5 列、第 7 列、第 9 列等)的每个奇数列的值的标准偏差,并将其写入相应的第 266 列行。
我现在用 apply 函数和 for 循环研究了两个小时,但我得到的只是我无法理解的错误消息。
【问题讨论】:
标签: r dataframe statistics
我有一个包含 120 行和 265 列的数据框。第 5 列到第 265 列的单元格包含一个数值。
对于每一行,我想计算从第 5 列到第 265 列(第 5 列、第 7 列、第 9 列等)的每个奇数列的值的标准偏差,并将其写入相应的第 266 列行。
我现在用 apply 函数和 for 循环研究了两个小时,但我得到的只是我无法理解的错误消息。
【问题讨论】:
标签: r dataframe statistics
你可以试试
df$newCol <- apply(df[seq(5, ncol(df), by=2)], 1, sd)
或者从matrixStats使用rowSds
library(matrixStats)
df$newCol <- rowSds(as.matrix(df[seq(5, ncol(df), by=2)]))
或者正如@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))
【讨论】:
RowSD :)
Rcpp 包编写它们。目前,这些功能只是更高效一点......
5:ncol(yourdata) 中的一列是否不是数字,即str(yourdata)