how to perform standard deviation on multiple rows(27482) which contain multiple columns(702) using R? I tried the code below:
code:
for(i in 1:nrow(zscore)){
print(i)
SD=sd(as.numeric(zscore[i,]))
zscore[i,702]=SD
}
how to perform standard deviation on multiple rows(27482) which contain multiple columns(702) using R? I tried the code below:
code:
for(i in 1:nrow(zscore)){
print(i)
SD=sd(as.numeric(zscore[i,]))
zscore[i,702]=SD
}
We can use apply
and sd
functions, see example:
# dummy reproducible data
zscore <- data.frame(matrix(1:10, nrow = 2))
# introduce NA
zscore[1, 2] <- NA
zscore
# X1 X2 X3 X4 X5
# 1 1 NA 5 7 9
# 2 2 4 6 8 10
# below will give NAs
apply(zscore, 1, sd)
# [1] NA 3.162278
# we need to remove NAs before getting SD
apply(zscore, 1, sd, na.rm = TRUE)
# [1] 3.415650 3.162278
Does it calculate for the entire data frame?
I am assuming Devon's example works fine for you and the problem is when you apply it to your data. Maybe there is a problem with your data not being all numeric, e.g. if you have a data frame with other variables (an so Devon's suggestion about using as.numeric()
may or may not work). You could post a few lines of your dataset so that we can take a look at it.