R 对数据框中的数据进行排序并对其进行排序
我有一个这样的数据框R 对数据框中的数据进行排序并对其进行排序,r,sorting,dataframe,R,Sorting,Dataframe,我有一个这样的数据框 Name Value A. -5 B. 100 F. 0 G. -5 我想按升序对数据进行排序,并添加一个秩列。所以我想要这样的东西: Name. Value. Rank A. -5. 1 G. -5. 1 F. 0. 2 B. 100. 3
Name Value
A. -5
B. 100
F. 0
G. -5
我想按升序对数据进行排序,并添加一个秩列。所以我想要这样的东西:
Name. Value. Rank
A. -5. 1
G. -5. 1
F. 0. 2
B. 100. 3
这可以通过
dplyr
软件包轻松实现
#Recreate the data
df <- read.table(text = "Name Value
A. -5
B. 100
F. 0
G. -5", header = TRUE)
library(dplyr)
df %>% arrange(Value) %>% mutate(Rank = dense_rank(Value))
#重新创建数据
df%排列(值)%>%变异(秩=密集_秩(值))
dplyr
函数读取数据帧df
,然后按Value
排列,然后添加一个新列Rank
,该列等于Value
的密集排列基本R解决方案可以是:
v1 <- order(df$Value)
data.frame(df[v1, ], rank = as.numeric(factor(df$Value[v1])))
# Name Value rank
#1 A. -5 1
#4 G. -5 1
#3 F. 0 2
#2 B. 100 3
v1我可以不使用任何软件包就完成它吗?因为没有R等价函数。你可以从rank(df$Value,ties.method=“min”)
开始分多个步骤来做,因为这会留下空白。as.numeric(factor(rank(df$Value,ties.method=“min”))
作为一种尝试所有densite\u rank
基本上是df我有一个问题。使用因子时,为什么需要从df$值中子集v1?@Talimanv1
是我们感兴趣的排序顺序。如果我们不使用v1
我们将以相同的顺序获得值
,而不进行排序,即-5100,0,-5。