2016-03-24 12 views
0

Ich habe diese Daten, und was ich tun möchte, ist die Vorkommen (Frequenzen) von einem, zwei, drei in jeder SpaltGraf bestimmte Worte in Datenrahmen/Matrix in R

ex zu zählen. 2 ONEs in der A-Spalte, 2 TWOs in der B-Spalte, 1 ONE in der C-Spalte usw.

Welche Funktion kann ich verwenden, um bestimmte Wörter in R zu zählen?

Und wie kann ich ein Histogramm daraus machen zählt?

ABC <-read.csv("c:/Data/dataset.csv") 

    A  B  C 
1 TWO ONE THREE 
2 ONE ONE TWO 
3 THREE TWO THREE 
4 ONE TWO ONE 
5 TWO THREE TWO 
+2

Die Funktion zu verwenden, ist 'table' müssen. – A5C1D2H2I1M1N2O1R2T1

+1

'Tisch (Stapel (ABC))' sollte es tun, und bitte vermeiden Sie, den Torpfosten zu bewegen. – A5C1D2H2I1M1N2O1R2T1

Antwort

3

Wir mtabulate verwenden, können durch jede Spalte

library(qdapTools) 
t(mtabulate(ABC)) 
#  A B C 
#ONE 2 2 1 
#THREE 1 1 2 
#TWO 2 2 2 

Oder wir verwenden table nach unlist ing den Datensatz und die Replikation der names von 'die Anzahl der unique Elemente im Datensatz zu erhalten ABC'. Beachten Sie, dass wir hier die table nur einmal aufrufen.

tbl <- table(unlist(ABC),names(ABC)[col(ABC)]) 
tbl 
#  A B C 
# ONE 2 2 1 
# THREE 1 1 2 
# TWO 2 2 2 

wäre eine etwas schnellere Option vapply mit tabulate

vapply(ABC, function(x) tabulate(factor(x)), numeric(3)) 

zu verwenden, wenn wir eine BarPlot

barplot(tbl, beside=TRUE, legend=TRUE) 
+0

Was ist, wenn ich qdapTools Pacakage in meinem R nicht habe? Gibt es eine andere Möglichkeit für mich, die Wörter zu zählen? – Meredith

+0

@ Meredith YOu können 'Tabelle' verwenden (in meinem Beitrag aktualisiert) – akrun

+0

@ Meredith Brauchen Sie ein' Bar' Diagramm oder Histogramm? Sie haben nur 3 Spalten – akrun

2
df <- data.frame(A=c('TWO','ONE','THREE','ONE','TWO'),B=c('ONE','ONE','TWO','TWO','THREE'),C=c('THREE','TWO','THREE','ONE','TWO'),stringsAsFactors=F); 
sapply(df,table); 
##  A B C 
## ONE 2 2 1 
## THREE 1 1 2 
## TWO 2 2 2