R по умолчанию меняет символы на факторы, что может раздражать. Вы можете проверить это командой:
str(df)
Который показывает
'data.frame': 7 obs. of 3 variables:
$ First_Name: Factor w/ 3 levels "Alex","James",..: 3 1 2 3 1 3 2
$ Last_Name : Factor w/ 5 levels "Johnson","Jones",..: 5 5 2 2 1 4 3
$ Frequency : num 4 7 8 9 3 10 4
Если вы добавите флаг stringsAsFactors, вы избежите этого:
df <- data.frame(First_Name=c("John","Alex","James","John","Alex","John","James"),
Last_Name = c("Smith","Smith","Jones","Jones","Johnson","Ryan","Murphy"),
Frequency = c(4,7,8,9,3,10,4), stringsAsFactors = FALSE)
str(df)
'data.frame': 7 obs. of 3 variables:
$ First_Name: chr "John" "Alex" "James" "John" ...
$ Last_Name : chr "Smith" "Smith" "Jones" "Jones" ...
$ Frequency : num 4 7 8 9 3 10 4
Но в любом случае вы можете группировать по уникальным и использовать любую функцию из этого подмножества, используя агрегат:
aggregate(Frequency ~ First_Name, data=df, FUN="sum")
First_Name Frequency
1 Alex 10
2 James 12
3 John 23
Таблица может быть переупорядочена с помощью функции заказа
out <- out[rev(order(out$Frequency)),]
First_Name Frequency
3 John 23
2 James 12
1 Alex 10
Если вы хотите изменить порядок первой таблицы по совокупному итогу, оставив ее в прежнем виде, вам нужно будет выполнить слияние.
out$rank <- 1:nrow(out)
new <- merge(df, out, by.x='First_Name', by.y='First_Name')
final <- new[order(new$rank),]
First_Name Last_Name Frequency.x Frequency.y rank
1 Alex Smith 7 10 1
2 Alex Johnson 3 10 1
3 James Jones 8 12 2
4 James Murphy 4 12 2
5 John Smith 4 23 3
6 John Jones 9 23 3
7 John Ryan 10 23 3
Тогда просто отбросьте ненужные столбцы.