Kedudukan berasaskan partition ialah teknik berkuasa yang disokong oleh pangkalan data SQL, membolehkan penetapan nilai integer kepada baris berdasarkan susunannya. Walaupun R menawarkan pelbagai fungsi untuk mencapai hasil yang serupa, pakej data.table, terutamanya versi 1.8.1 dan yang lebih baru, menyediakan penyelesaian komprehensif yang meniru fungsi fungsi RANK(), DENSE_RANK() dan ROW_NUMBER() Oracle.
Fungsi pangkat() berfungsi sama seperti Oracle Fungsi RANK(), memberikan nilai integer berdasarkan susunan nilai dalam kumpulan. Pertimbangkan contoh berikut:
DT[ , valRank := rank(-value), by = "group"]
Di sini, valRank mewakili pemeringkatan nilai dalam susunan menurun dalam setiap kumpulan.
Untuk meniru DENSE_RANK( ), apabila hubungan dalam nilai kedudukan tidak dilangkau, anda boleh menukar nilai kepada faktor dan mendapatkan semula nilai integer asas. Contohnya:
DT[ , infoRank := rank(info, ties.method = "min"), by = "group"] DT[ , infoRankDense := as.integer(factor(info)), by = "group"]
infoRank menyediakan kedudukan standard, manakala infoRankDense menawarkan kedudukan yang padat di mana ikatan menghasilkan nilai integer yang sama.
Untuk ROW_NUMBER (), penyelesaian mudah ialah menggunakan jumlah terkumpul 1 untuk setiap satu kumpulan:
DT[ , row_number := cumsum(1), by = "group"]
row_number memberikan nilai integer tambahan berdasarkan susunan baris dalam kumpulan.
Fungsi LEAD dan LAG, yang biasa digunakan untuk temporal atau analisis data berurutan, juga boleh dicontohi menggunakan data.jadual. Fungsi ini menyediakan nilai daripada baris sebelumnya (LAG) atau berikut (LEAD), dianjak mengikut bilangan kedudukan tertentu.
Untuk meniru LEAD dan LAG, buat pembolehubah kedudukan berdasarkan susunan ID dalam kumpulan . Kemudian, gunakan argumen berbilang untuk mendapatkan nilai daripada baris sebelumnya atau seterusnya. Contohnya:
DT[ , prev := DT[J(group, idRank - 1), value, mult = 'last']] DT[ , nex := DT[J(group, idRank + 1), value, mult = 'first']]
Dalam contoh ini, prev memberikan nilai dari baris sebelumnya, manakala nex memperoleh nilai dari baris berikutnya. Anda boleh melaraskan anjakan dengan mengubah nilai dalam idRank.
Dengan memanfaatkan keupayaan pakej data.table, anda boleh meniru dengan berkesan fungsi fungsi kedudukan SQL dalam R, menyediakan pilihan analisis data yang cekap dan fleksibel.
Atas ialah kandungan terperinci Bagaimanakah Pakej `data.table` R Boleh Meniru Fungsi RANK, DENSE_RANK, ROW_NUMBER, LEAD dan LAG SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!