Создание нескольких подмножеств все в одном data.frame (возможно, с ddply) - PullRequest
0 голосов
/ 30 июля 2010

У меня большой data.frame, и я хотел бы иметь возможность уменьшить его, используя квантильное подмножество одной из переменных. Например:

x <- c(1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10)
df <- data.frame(x,rnorm(100))

df2 <- subset(df, df$x == 1)
df3 <- subset(df2, df2[2] > quantile(df2$rnorm.100.,0.8))

То, что я хотел бы закончить, это data.frame, который содержит все квантили для x = 1,2,3 ... 10.

Есть ли способ сделать это с помощью ddply?

Ответы [ 2 ]

3 голосов
/ 30 июля 2010

Вы можете попробовать:

ddply(df, .(x), subset, rnorm.100. > quantile(rnorm.100., 0.8))

И не по теме: вы можете использовать df <- data.frame(x,y=rnorm(100)) для названия колонки на лету.

2 голосов
/ 30 июля 2010

Вот другой подход с мало используемой командой ave ().(очень быстро вычислить таким образом)

Создайте новый столбец, содержащий вычисления квантиля для каждого уровня x

df$quantByX <-  ave(df$rnorm.100., df$x, FUN = function (x) quantile(x,0.8))

Выберите элементы нового столбца и столбца x.

df2 <- unique(df[,c(1,3)])

В результате получается один кадр данных с уникальными элементами в столбце x и рассчитанным квантилем для каждого уровня x.

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