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