Я пытаюсь найти лучшее предложение с точки зрения цены / карата из набора данных Diamonds из пакета plyr
Так что я делаю
new = ddply(diamonds, c("cut", "color", "clarity"), transform, ecart= price/carat - mean(price/carat))
best = ddply(new, c("cut", "color", "clarity"), summarize, which(ecart == min(ecart))
Нокогда я делаю это, я получаю
head(best)
cut color clarity ..1
1 Fair D I1 4
2 Fair D SI2 49
3 Fair D SI1 39
4 Fair D VS2 9
5 Fair D VS1 2
Таким образом, кажется, что индекс берется из подгрупп, создаваемых ddply.Здесь только первый индекс 4 соответствует глобальному индексу.если я найду новый [2,], например, он не относится к типу Fair, D, VS1.
Есть идеи, как легко получить позицию глобального индекса?
Как быВы, например, добавить элегантно столбец id?Есть ли лучшее решение?