2016-07-09 10 views
1

Ich habe eine ziemlich große Datenmenge und will zählen, wie oft der Wert in einer bestimmten Spalte erwähnt wirdZählwerte in einer Spalte und fügen Sie das Ergebnis neben die Spalte in eine neuen

Beispiel:

A Home Away 
D Lisa Jill 
D Jack Andre 
C Jack Kirk 
C Jane Jill 

Ich möchte eine neue Spalte (namens Count) hinzufügen und zählen, wie oft jeder Name in Home erwähnt wird.

A Home Away Count 
D Lisa Jill 1 
D Jack Andre 2 
C Jack Kirk 2 
C Jane Jill 1 

Vielen Dank!

Antwort

2

Wir können dplyr verwenden. Nach Gruppierung von 'Home', bekommen die Anzahl der Zeilen (n()) und erstellen, die als neue Spalte mit mutate

library(dplyr) 
library(magrittr) 
df1 %<>% 
    group_by(Home) %>% 
    mutate(Count = n()) 
# A Home Away Count 
# <chr> <chr> <chr> <int> 
#1  D Lisa Jill  1 
#2  D Jack Andre  2 
#3  C Jack Kirk  2 
#4  C Jane Jill  1 

Oder mit data.table

library(data.table) 
setDT(df1)[, Count := .N, by = Home] 

Oder mit ave aus base R

df1$Count <- with(df1, ave(seq_along(Home), Home, FUN = length)) 
+0

Vielen Dank für die schnelle Antwort - ich bin immer noch ein noob in R und bekam folgende Fehler: ungültige Faktorstufe, NAs –

+0

@ C. H erzeugt. Basiert es auf 'ave' oder' dplyr'. Ich denke, das 'dplyr' sollte gut funktionieren. – akrun

+0

@ C.H. Die'Ave'-Methode wurde aktualisiert. Bitte überprüfen Sie, ob das immer noch Fehler gibt – akrun

4

Oder mit plyr (Angenommen, Ihre Daten in df gesetzt wird):

library(plyr) 
join(df, as.data.frame(table(Home=df$Home))) 

# A Home Away Freq 
# 1 D Lisa Jill 1 
# 2 D Jack Andre 2 
# 3 C Jack Kirk 2 
# 4 C Jane Jill 1 
Verwandte Themen