首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在排除NA进行分析的同时获得NA

问如何在排除NA进行分析的同时获得NA
EN

Stack Overflow用户
提问于 2021-08-27 14:29:21
回答 2查看 27关注 0票数 0

我有一个很大的列,我想对时间进行排名,如下所示。我想保留NAs而把它们排除在分析之外,

代码语言:javascript
复制
 df<-read.table(text="time
    40
    30
    50
    NA
    60
    NA
    20
    ", header=True)

我想得到下表:

代码语言:javascript
复制
 time   Rank
    40  3
    30  4
    50  2
    NA  NA
    60  1
    NA  NA
    20  5

我使用了以下代码:

代码语言:javascript
复制
df$Rank<--df$time,ties.method="mim")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-27 14:35:39

代码语言:javascript
复制
#fixed data
df<-read.table(text="time
     40
     30
     50
     NA
     60
     NA
     20
     ", header=TRUE)

你可以这样做

代码语言:javascript
复制
nonNaIndices <- !is.na(df$time)
df$Rank <- NA
df$Rank[nonNaIndices] <- rank(df$time[nonNaIndices],ties.method="min")

结果是

代码语言:javascript
复制
> df
  time Rank
1   40    3
2   30    2
3   50    4
4   NA   NA
5   60    5
6   NA   NA
7   20    1

注意:在提交问题之前,请确保检查问题是否缺少函数调用。在您的情况下,可以从上下文中猜到。

票数 2
EN

Stack Overflow用户

发布于 2021-08-28 12:11:51

您可以从dplyr使用dense_rank -

代码语言:javascript
复制
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    5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68955135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档