Изчисляване на множество вариации на набор от данни в R

Проблемът ми е донякъде свързан с това въпрос.

Имам данни като по-долу

V1   V2
..   1
..   2
..   1
..   3

Трябва да изчисля дисперсията на данните в V1 за всяка стойност на V2 кумулативно (Това означава, че за конкретна стойност на V2, да речем n, трябва да бъдат включени всички редове на V1, които имат съответстващи V2 по-малко от n.

Ще помогне ли ddply в такъв случай?


person hardikudeshi    schedule 16.09.2012    source източник


Отговори (1)


Не мисля, че ddply ще помогне, тъй като е изграден върху концепцията за вземане на неприпокриващи се подмножества на рамка от данни.

d <- data.frame(V1=runif(1000),V2=sample(1:10,size=1000,replace=TRUE))
u <- sort(unique(d$V2))
ans <- sapply(u,function(x) {
    with(d,var(V1[V2<=x]))
})
names(ans) <- u

Не знам дали има по-ефективен начин да се направи това...

person Ben Bolker    schedule 16.09.2012
comment
Благодаря ви, това реши проблема за мен. Ще изчакам известно време за алтернативен отговор, в противен случай ще приема вашето решение! - person hardikudeshi; 16.09.2012
comment
Отговорът на Бен е прост и точен. Вероятно няма да стане много по-добре. - person Tyler Rinker; 16.09.2012
comment
Мисля, че бихте могли да направите нещо, където да изчислите сумата от V1 и сумата от V1^2 за всяка част, да изчислите кумулативните суми и да изчислите кумулативната дисперсия от това, но би било малко сложно ... - person Ben Bolker; 16.09.2012