Bagaimana untuk tambah garis baru di data.frame dengan memasukkan jumlah keseluruhan atau Total. Cara yang ditunjukkan di sini ialah dengan menggunakan pakej data.table. Fungsi rbind atau rbindlist boleh digunakan, tetapi cara rbindlist melalui pakej data.table lebih cepat.

library(data.table)
df <- data.table(v1 = letters[1:10], v2 = 1:10)

Contoh data

head(df, n=4)
   v1 v2
1:  a  1
2:  b  2
3:  c  3
4:  d  4

Cara yang paling singkat untuk meletakkan Jumlah di bawah data.frame ialah seperti begini:

## cara rbindlist
dfj <- rbindlist(list(df, list("Jumlah", dim(df)[1])))

## Masukkan jumlah keseluruhan
dfjs <- rbindlist(list(df, list("Jumlah semua", sum(df$v2))))

## cara rbind
dfjj <- rbind(df, list("Jumlah", dim(df)[1]))

Hasilnya

R> dfj
        v1 v2
 1:      a  1
 2:      b  2
 3:      c  3
 4:      d  4
 5:      e  5
 6:      f  6
 7:      g  7
 8:      h  8
 9:      i  9
10:      j 10
11: Jumlah 10

Cara lain ialah dengan membuat data.frame baru dan kombinasikan dengan df

dftot <- data.table(v1 = "Jumlah", dim(df)[1])
dfcom <- rbindlist(list(df, dftot))

Hasilnya bila Jumlah dimasukkan di bawah data.frame

R> dfcom
        v1 v2
 1:      a  1
 2:      b  2
 3:      c  3
 4:      d  4
 5:      e  5
 6:      f  6
 7:      g  7
 8:      h  8
 9:      i  9
10:      j 10
11: Jumlah 10

Sekiranya ingin memasukkan informasi dibarisan tertentu boleh buat seperti begini:

## Masukkan selepas barisan ke-3
rbindlist(list(df[1:3, ], as.list(c("ZZ", 6)), df[4:dim(df)[1], ]))

## atau
rbindlist(list(df[1:3, ], list("ZZ", 6), df[4:dim(df)[1], ]))

Barisan baru selepas barisan ke 3 dengan "ZZ" dan nombor 6 dimasukkan.

    v1 v2
 1:  a  1
 2:  b  2
 3:  c  3
 4: ZZ  6
 5:  d  4
 6:  e  5
 7:  f  6
 8:  g  7
 9:  h  8
10:  i  9
11:  j 10
total  sum 
comments powered by Disqus