стандартное отклонение для разных столбцов с регулярным шагом в кадре данных - PullRequest
0 голосов
/ 28 марта 2019

У меня проблема с вычислением SD для моего фрейма данных в R. Мне нужно рассчитать SD для каждого столбца с step=3.Итак, SD на км 1:3, SD на км 4:6, ...

Я уже пробовал разные решения, но, к сожалению, безуспешно:

df <- data.frame(km = c(1:13),
A2012 = c(0.1,0.3,0.8,0.45,0.98,0.45,0.75,0.71,0.36,0.11,0.26,0.68,0.41), 
A2013 = c(0.36,0.11,0.26,0.68,0.41,0.45,0.1,0.3,0.8,0.98,0.45,0.75,0.71))

1 Ответ

0 голосов
/ 28 марта 2019

Путем вырезания кадра данных в диапазонах и последующего разделения это достигается:

df$ranges <- cut(df$km,seq(1,13,3),include.lowest=T,right=F)
###new solution, much nicer
SDs <- aggregate(df[,2:3],list(df$ranges),sd)

### old solution
SDs <- t(sapply(split(df,df$ranges),function(df){
  apply(df[,2:3],2,sd)
}))

###solution to question in comment:

cuts <- matrix(data=c(seq(1,max(df$km)-3,2),seq(4,max(df$km),2)),ncol=2)
SDs <- t(sapply(1:nrow(cuts),function(rn)
{
  SD <- apply(subset(df,df$km >= cuts[rn,1] & df$km <= cuts[rn,2])[,2:3],2,sd)
  return(SD)
}))
rownames(SDs) <- apply(cuts,1,paste,collapse = "-")
colnames(SDs) <- paste0("sd(",colnames(SDs),")")
SDs
     sd(A2012) sd(A2013)
1-4  0.2954516 0.2412986
3-6  0.2644491 0.1737815
5-8  0.2171597 0.1567376
7-10 0.3039051 0.4132392
9-12 0.2412986 0.2200757

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...