2017-01-25 4 views
0

У меня проблема с иерархической структурой данных для получения простой описательной статистики; для каждого 1-го уровня наблюдения, у меня есть несколько 2 наблюдения (но не такое же число) уровня, такие как:Иерархические данные и описания

Level 1 Level2 x y z  k 

1  a 0.12 1 debt  0 
    1  b 0.08 1 debt  0 
    1  c 0.22 1 debt  0 
    2  d 0.32 0 credit 1 
    2  e 0.17 0 credit 1 
    3  f 0.20 1 credit 1 
    3  g 0.11 1 credit 1 
    3  h 0.05 1 credit 1 
    3  i 0.01 1 credit 1 

Хотя некоторые переменные зависят от уровня 2 (х) другие (у, z, k) зависит от уровня 1. Если я могу получить описательную статистику - например, table(k) - сгруппирован для уровня 1, а не уровня 2?

Исх. table(k) дает 6 в данном конкретном случае, но я хотел бы, чтобы получить 2, такие как число кластеров на уровне 1 при к = 1, что-то вроде table(k ~ study)

Заранее спасибо за помощь

Marco

+0

dplyr package имеет функцию group_by(), которая может быть использована здесь: 'k%>% group_by (Уровень 1)%>% summary (COUNTS = n(), SUM = sum (x))' –

+0

Спасибо за ваша помощь. Это дает 'Ошибка в UseMethod (" group_by_ "): не применимый метод для 'group_by_', примененный к объекту класса" c ('integer', 'numeric') "' –

+0

Была ли установлена ​​и загружена библиотека 'dplyr' ? Кроме того, функция '' group_by() '. 'group_by _()', вероятно, не то, что вы хотите. –

ответ

0

Это, как вы будете использовать dplyr для этого:

library(dplyr) 

df <- data_frame(Level1 = rep(1:3, each = 3), 
       Level2 = letters[1:9], 
       x = c(0.12,0.08,0.22,0.32,0.17,0.20,0.11,0.05,0.01), 
       y = c(1,1,1,0,0,1,1,1,1), 
       z = c(rep("debt",4),rep("credit",5)), 
       k = c(0,0,0,1,1,1,1,1,1)) 

df %>% 
    count(Level1, k) 

Source: local data frame [3 x 3] 
Groups: Level1 [?] 

    Level1  k  n 
    <int> <dbl> <int> 
1  1  0  3 
2  2  1  3 
3  3  1  3 

Просто убедитесь, что прочитать помощь и виньетки для пакета, прежде чем сказать «это не работает». Скорее всего, все прекрасно, вы просто используете его неправильно.

+0

Спасибо за вашу помощь, извините, что беспокою вас, но это не дает того, что Я искал. Я, скорее всего, выразил себя плохо. Я ищу функцию, которая говорит мне «сколько кластеров уровня 1 имеет k = 1?», Поэтому в приведенном выше примере я ищу «2». С dplyr единственное, что мне удалось получить, это весь набор данных, сгруппированный по уровню 1. –

+0

Вы смотрите на 'count()' then. Я отредактировал свой ответ. Если вы хотите, чтобы определенные группы выводились, вы просто 'filter()' то, что вы хотите/не хотите. –

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