我有这样的数据集:
EMP_NUMBER ATTDATE ATTINTIME ATTOUTTIME
00001 01-05-2018 9:00 18:00
00001 02-05-2018 8:00 20:00
我希望最大值具有最小排名,而最低值具有最高排名。 在此数据集中,Value = 1将重新编码为5,而Value = 5将重新编码为1。 但是,由于我的数据集中缺少Value = 3,通过使用等级函数等级(-Value),我只能设法得到这个
Value
5
4
2
1
R中有什么方法可以得到这样的东西吗?
Value Rank
5 1
4 2
2 3
1 4
答案 0 :(得分:0)
试试这样:
df <- data.frame(Value = c(5, 4, 2, 1))
df$fact <- as.factor(df$Value)
df$Rank <- as.numeric(rev(levels(df$fact)))[df$fact]
> (df <- df[, -2])
Value Rank
1 5 1
2 4 2
3 2 4
4 1 5
答案 1 :(得分:0)
您可以通过查找向量的最大值和最小值,然后在最大值和最小值之间的完整数字集内搜索索引来执行此操作。
v <- c(5,4,2)
x <- min(v)
y <- max(v)
x:y
match(v,x:y)
[1] 4 3 1
使用因子的水平作为J.Win。只要你的矢量中有一个1,建议就会起作用,否则,最高值的排名不会为1.抱歉,我没有足够的声誉将其添加为评论。