2016-08-09 168 views
-1

In R habe ich DatenDatenaggregation basierend auf unterschiedlich geschrieben Namen in R

Name number 
Peter 14 
peter 2 
hans 11 
... 

Meine Frage ist, wie finde ich die Namen mit großen Buchstaben und sie kleine Buchstaben kombinieren. Zum Beispiel möchte ich peter und Peter kombinieren und die Summe der number, die in diesem Fall 14 + 2 = 16 ist.

Angenommen, ich habe über 500 Namen, von denen einige mit Kleinbuchstaben beginnen und manche mit Großbuchstaben - wie soll ich das im Allgemeinen lösen?

Danke.

Antwort

3

Sie können in Kombination mit verwenden. Daher werden alle Namen nur in kleine Zeichen umgewandelt. Die Aggregation wird dann mit sum angewendet. Dies kann in einem neuen Objekt gespeichert werden, sagen wir dfAgg

df <- data.frame(name = c("Peter", "peter", "Hans", "hans"), number = c(14,2,11,3)) 

dfAgg <- aggregate(number ~ tolower(name), data = df, sum) 
dfAgg 
# tolower(name) number 
#   hans  14 
#   peter  16 
0

Nun, Sie können die Groß-/Kleinschreibung ignorieren. Mache alle Namen nach oben oder unten und zähle dann die Menge. Ex:

  • toupper ("Peter")
  • toupper ("Peter")
0

Versuchen:

names_nums <- read.table(text="Name number 
Peter 14 
peter 2 
hans 11", header=T) 

sum(names_nums[tolower(names_nums$Name) == "peter",]$number) 

Sie die Summe für alle von ihnen bekommen kann wie folgt :

do.call(rbind,lapply(split(names_nums, tolower(names_nums$Name)), function(x) { 
    sum(x$number) 
})) 

Als ks!