Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 对数据框中的数据进行排序并对其进行排序_R_Sorting_Dataframe - Fatal编程技术网

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?@Taliman
v1
是我们感兴趣的排序顺序。如果我们不使用
v1
我们将以相同的顺序获得
,而不进行排序,即-5100,0,-5。