2013-06-21 18 views
7

Podsumowałem kolumnę ramki danych (wywołaj to dane), która składa się z identyfikatorów, więc otrzymuję całkowitą liczbę każdego identyfikatora w danej kolumnie. Chciałbym przekonwertować to do innej ramki danych (nazwij to TOTALNUM), więc mam dwie kolumny. Pierwsza kolumna to sam identyfikator, a druga kolumna to całkowita liczba każdego identyfikatora. czy to możliwe?Jak przekonwertować wynik podsumowania na ramkę danych?

dane próbki:

ids <- c(1,2,3,4,5,1,2,3,1,5,1,4,2,2,2) 
info <- c("A","B","C","A","B","C","A","B","C","A","B","C","A","B","C") 
DATA <- data.frame(ids, info) 
DATA$ids <- as.factor(DATA$ids) 

Co chciałbym umieścić w ramce danych: Górny rząd będzie pierwsza kolumna w nowej ramce danych. Drugi rząd będzie drugą kolumną w nowej ramce danych.

summary(DATA$ids) 

To co chciałbym ramkę danych, aby wyglądać tak:

ids nums 
1  4 
2  5 
3  2 
4  2 
5  2 

Dzięki !!

Odpowiedz

5

W swoim podejściu, można skorzystać z faktu, że summary zwraca wektor liczy, o nazwach dla każdej wartości ids:

> my.summary <- summary(DATA$ids) 
> data.frame(ids=names(my.summary), nums=my.summary) 
    ids nums 
1 1 4 
2 2 5 
3 3 2 
4 4 2 
5 5 2 

lub - i to podejście jest bardziej prosta - ty można utworzyć tabelę częstotliwości na podstawie ids, a następnie przekonwertować ją na ramkę danych:

> as.data.frame(table(ids), responseName="nums") 
    ids nums 
1 1 4 
2 2 5 
3 3 2 
4 4 2 
5 5 2 
+0

Dzięki - nie zdawałem sobie sprawy, że to takie proste! Drugie podejście było tym, którego używałem. – Sheila

Powiązane problemy