ホームページ >データベース >mysql チュートリアル >SQL の RANK 関数 (ROW_NUMBER、RANK、DENSE_RANK、LEAD、LAG) を R でレプリケートするにはどうすればよいですか?
R での SQL のランク関数のエミュレーション
R での同等のランク関数
データ。 table パッケージは Oracle の SQL ランクと同様の機能を提供します関数。
ランク関数の使用法例
library(data.table) DT <- data.table(ID = seq_len(4 * 3), group = rep(1:4, each = 3), value = rnorm(4 * 3), info = c(sample(c("a", "b"), 4 * 2, replace = TRUE), sample(c("c", "d"), 4, replace = TRUE)), key = "ID") DT[, valRank := rank(-value), by = "group"]
DENSE_RANK 模倣
DT[, infoRank := rank(info, ties.method = "min"), by = "group"] DT[, infoRankDense := as.integer(factor(info)), by = "group"]
LEAD および LAG 模倣
ランク変数の作成グループ内の ID の順序に基づきます。次に、J() を使用して、前後のレコードから値を取得します。
DT[, idRank := rank(ID), by = "group"] setkey(DT, group, idRank) DT[, prev := DT[J(group, idRank - 1), value, mult = 'last']]
LEAD の場合は、適切なオフセットを idRank に追加し、multi = 'first':
DT[, nex := DT[J(group, idRank + 1), value, mult = 'first']]を使用します。
以上がSQL の RANK 関数 (ROW_NUMBER、RANK、DENSE_RANK、LEAD、LAG) を R でレプリケートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。