Home > Software design >  How can I recode a variable in R, so that the lowest value will be 1, the second lowest will be 2 et
How can I recode a variable in R, so that the lowest value will be 1, the second lowest will be 2 et

Time:03-02

Imagine I have a tidy dataset with 1 variable and 10 observations. The values of the variable are e.g. 3, 5, 7, 9, 13, 17, 29, 33, 34, 67. How do I recode it so that the 3 will be 1, the 5 will be 2 (...) and the 67 will be 10?

CodePudding user response:

One possibility is to use rank: in a ´dplyr` setting it could look like this:

library(dplyr)

tibble(x = c(3, 5, 7, 9, 13, 17, 29, 33, 34, 67)) %>%
  mutate(y = rank(x))

CodePudding user response:

Here is one way -

x <- c(3, 5, 7, 9, 13, 17, 29, 33, 67, 34)
x1 <- sort(x)
y <- match(x1, unique(x1))
y
#[1]  1  2  3  4  5  6  7  8  9 10

Changed the order of last 2 values so that it also works when the data is not in order.

CodePudding user response:

Another way:

x <- c(3, 5, 7, 9, 13, 17, 29, 33, 67, 34)
x <- sort(x)
seq_along(x)

# 1  2  3  4  5  6  7  8  9 10
  •  Tags:  
  • r
  • Related