2015-03-11 3 views
0

У меня есть набор данных, который содержит несколько сотен переменных с сотнями наблюдений. Каждое наблюдение имеет уникальный идентификатор и связано с одной из примерно 50 групп. Похоже, что так (переменные я не обеспокоен, были проигнорированы ниже):R: plyr/ddply и скорректированные средства

ID  Group  Score 
    1  10  400 
    2  11  473 
    3  12  293 
    4  13  382 
    5  14  283 
    6  11  348 
    7  11  645 
    8  13  423 
    9  10  434 
10  10  124 

т.д.

Я хотел бы, чтобы вычислить скорректированное среднее для каждого наблюдения, которые необходимо использовать N- подсчет для каждой группы, сумма баллов для этой группы, а также средства для баллов каждой группы. (Таким образом, в приведенном выше примере N-счет для группы 11 равен трем, сумма равна 1466, а средняя - 488,67, и я буду использовать эти цифры только по идентификаторам 2, 6 и 7).

Я возился с plyr, и я в состоянии извлечь п-счетчики и средства следующим образом (с учетом недостающих баллов и ценностей группы):

new_data <- ddply(main_data, "Group", N = sum(!is.na(Scores)), mean = mean(Scores, na.rm = TRUE). 

я застрял, хотя, как получить сумму баллов для определенной группы, а затем как вычислить скорректированные средства либо в наборе main_data, либо в новом наборе данных. Любая помощь будет оценена по достоинству.

+0

Использование пакета dplyr, вы, вероятно, потребуется что-то вроде 'group_by (mydf, Group)%>% реферирования (число = п(), всего = сумма (Score), среднее = сумма (Score)/п()) ' – jazzurro

ответ

0

Адрес plyr.

ddply(main_data, .(Group), summarize, N = sum(!is.na(Score)), mean = mean(Score, na.rm = TRUE), total = sum(Score)) 

    Group N  mean total 
1 10 3 319.3333 958 
2 11 3 488.6667 1466 
3 12 1 293.0000 293 
4 13 2 402.5000 805 
5 14 1 283.0000 283 

Проверьте комплект dplyr.

main_data %>% group_by(Group) %>% summarize(n = n(), mean = mean(Score, na.rm=TRUE), total = sum(Score)) 

Source: local data frame [5 x 4] 

    Group n  mean total 
1 10 3 319.3333 958 
2 11 3 488.6667 1466 
3 12 1 293.0000 293 
4 13 2 402.5000 805 
5 14 1 283.0000 283