Załóżmy, że mam następujące dane:Zastosowanie dplyr :: percent_rank(), aby obliczyć szeregi percentylowe ramach grupy
id grpvar1 grpvar2 value
1 1 3 7.6
2 1 2 4
...
3 1 5 2
dla każdego id
chcę obliczyć percent_rank()
ITS value
w grupie określonej przez połączenie z grpvar1
i grpvar2
.
Korzystanie data.table
, pójdę (zakładając, że moje dane są w data.frame
nazywa dataf
:
library(data.table)
# Make dataset into a data.table.
dt <- data.table(dataf)
# Calculate the percentiles.
dt[, percrank := rank(value)/length(value), by = c("grpvar1", "grpvar2")]
Jaki jest odpowiednik w dplyr
Mogłabyś spróbuj: 'dataf%>% group_by (grpvar1, grpvar2)%>% mutate (percrank = ranga (wartość)/długość (wartość))' co daje wynik, który pokazałeś używając 'data.table' – akrun
Nie ma prawdziwego powodu, aby używać 'dplyr :: percent_rank()', ponieważ jest to prosta funkcja, która wykonuje '(min_rank (x) - 1)/(length (x) - 1)'. Łatwiej jest napisać 'rank (value)/length (value)' niż próbować zaadoptować 'percent_rank' do twoich potrzeb –
Akrun, zawiń to w odpowiedź, a sprawdzę to, gdy potwierdzę, że działa zgodnie z przeznaczeniem! –