Saya memiliki kumpulan data berikut:

         Mark       Model      Sold
1      Toyota       Yaris      7739
2       Dacia      Duster      5798
3      Toyota     Corolla      4010
4      Toyota        RAV4      3258
5       Skoda       Fabia      3197
6        Fiat        Tipo      3157
7       Skoda     Octavia      3017

Saya memerlukan rumus yang merangkum Mark yang digandakan dan jumlah total Terjual, untuk mendapatkan hasil yang terlihat seperti ini:

         Mark       Model      Sold
1      Toyota           3     15007
2       Dacia           1      5798
3       Skoda           2      6214
4        Fiat           1      3157

Bisakah seseorang membantu saya dengan ini?

1
Jacek Szyszko 16 Januari 2021, 18:50

3 jawaban

Jawaban Terbaik
library(dplyr)

df %>% group_by(Mark) %>% summarise(Model = n(), Sold = sum(Sold))

Di mana df adalah kumpulan data Anda.

3
det 16 Januari 2021, 15:54

Opsi data.table

> setDT(df)[, .(Model = .N, Sold = sum(Sold)), Mark]
     Mark Model  Sold
1: Toyota     3 15007
2:  Dacia     1  5798
3:  Skoda     2  6214
4:   Fiat     1  3157
1
ThomasIsCoding 16 Januari 2021, 21:57

Menggunakan base R

do.call(data.frame, aggregate(Sold ~ Mark, df, function(x)
               c(Model = length(x), Sold = sum(x))))

Data

df <- structure(list(Mark = c("Toyota", "Dacia", "Toyota", "Toyota", 
"Skoda", "Fiat", "Skoda"), Model = c("Yaris", "Duster", "Corolla", 
"RAV4", "Fabia", "Tipo", "Octavia"), Sold = c(7739L, 5798L, 4010L, 
3258L, 3197L, 3157L, 3017L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7"))
1
akrun 16 Januari 2021, 19:13