我有一个很大的列,我想对时间进行排名,如下所示。我想保留NAs而把它们排除在分析之外,
df<-read.table(text="time
40
30
50
NA
60
NA
20
", header=True)我想得到下表:
time Rank
40 3
30 4
50 2
NA NA
60 1
NA NA
20 5我使用了以下代码:
df$Rank<--df$time,ties.method="mim")发布于 2021-08-27 14:35:39
#fixed data
df<-read.table(text="time
40
30
50
NA
60
NA
20
", header=TRUE)你可以这样做
nonNaIndices <- !is.na(df$time)
df$Rank <- NA
df$Rank[nonNaIndices] <- rank(df$time[nonNaIndices],ties.method="min")结果是
> df
time Rank
1 40 3
2 30 2
3 50 4
4 NA NA
5 60 5
6 NA NA
7 20 1注意:在提交问题之前,请确保检查问题是否缺少函数调用。在您的情况下,可以从上下文中猜到。
发布于 2021-08-28 12:11:51
您可以从dplyr使用dense_rank -
library(dplyr)
df %>% mutate(Rank = dense_rank(-time))
# time Rank
#1 40 3
#2 30 4
#3 50 2
#4 NA NA
#5 60 1
#6 NA NA
#7 20 5https://stackoverflow.com/questions/68955135
复制相似问题