Рассмотрим следующий кадр данных:
df <- data.frame(numeric=c(1,2,3,4,5,6,7,8,9,10), string=c("a", "a", "b", "b", "c", "d", "d", "e", "d", "f"))
print(df)
numeric string
1 1 a
2 2 a
3 3 b
4 4 b
5 5 c
6 6 d
7 7 d
8 8 e
9 9 d
10 10 f
Имеет числовую и строковую переменную. Теперь я хотел бы создать еще один фрейм данных, в котором строковая переменная отображает только список уникальных значений «a», «b», «c», «d», «e», «f», а числовая переменная имеет вид результат суммы числовых значений в предыдущем кадре данных, в результате чего получается этот кадр данных:
print(new_df)
numeric string
1 3 a
2 7 b
3 5 c
4 22 d
5 8 e
6 10 f
Это можно сделать с помощью цикла for, но это будет довольно неэффективно в больших наборах данных, и я бы предпочел другие варианты. Я попытался использовать пакет dplyr
, но я не получил ожидаемый результат:
library(dplyr)
> df %>% group_by(string) %>% summarize(result = sum(numeric))
result
1 55