2009-09-08 6 views
11

Хэдли включил меня в пакет plyr, и я нахожу, что использую его все время, чтобы сделать «группу». Но я считаю себя того, чтобы всегда переименовывать результирующие столбцы, так как они по умолчанию V1, V2 и т.д.переименование выходного столбца с пакетом plyr в R

Вот пример:

mydata<-data.frame(matrix(rnorm(144, mean=2, sd=2),72,2),c(rep("A",24),rep("B",24),rep("C",24))) 
colnames(mydata) <- c("x_value", "acres", "state") 
groupAcres <- ddply(mydata, c("state"), function(df)c(sum(df$acres))) 
colnames(groupAcres) <- c("state","stateAcres") 

Есть ли способ сделать ddply имя результирующего столбца для меня так Я могу опустить эту последнюю строку?

+0

JD- Это первая строка кода не работает, должно быть RNorm (..., 72 , 2), например: mydata <-data.frame (матрица (rnorm (144, среднее = 2, sd = 2), 72,2), c (rep ("A", 24), rep ("B ", 24), rep (" C ", 24))) ' – medriscoll

+0

хороший улов! Я редактировал свой пример. Благодаря! –

ответ

10

Это похоже на работу:

> groupAcres <- ddply(mydata, c("state"), function(df) c(myName=sum(df$acres))) 
> groupAcres 
    state myName 
1  A 56.87973 
2  B 57.84451 
3  C 52.82415 
+5

Я путаюсь через синтаксис R, не понимая его. Почему же нужна функция сцепления? – Farrel

+0

@Farrel: дать элементу данных имя. Использование 'data.frame' вместо этого также работает. – krlmlr

19

Используйте обобщать (или суммировать):

groupAcres <- ddply(mydata, "state", summarise, 
    myName = sum(acres)) 
+0

Это отличный способ решить эту проблему. Я выбрал ответ Криса только потому, что он более общий. Я буду использовать его метод и ваш в будущем. Мне жаль, что я не смог бы объединить их или принять их как –

+1

. Мой метод на самом деле немного более общий (потому что, если вы возвращаете несколько типов, они могут иметь разные типы). Я написал резюме для этого использования. – hadley

+0

Я не могу заставить этот метод работать для меня, потому что я использую функцию nrow, чтобы суммировать количество строк в подмножестве данных, любые советы? –

 Смежные вопросы

  • Нет связанных вопросов^_^