I have an R dataframe where one of the columns is a factor whose levels have an implicit ordering. How can I convert the factor levels to specific integers in the following manner:
- "Strongly disagree" --> 1
- "Somewhat disagree" --> 2
- "Neutral" --> 3
- "Somewhat agree" --> 4
- "Strongly agree" --> 5
For example, here is my data frame:
agree <- c("Strongly agree", "Somewhat disagree", "Somewhat agree",
"Neutral", "Strongly agree", "Strongly disagree", "Neutral")
age <- c(41, 35, 29, 42, 31, 22, 58)
df <- data.frame(age, agree)
df
# age agree
# 1 41 Strongly agree
# 2 35 Somewhat disagree
# 3 29 Somewhat agree
# 4 42 Neutral
# 5 31 Strongly agree
# 6 22 Strongly disagree
# 7 58 Neutral
str(df)
# 'data.frame': 7 obs. of 2 variables:
# $ age : num 41 35 29 42 31 22 58
# $ agree: Factor w/ 5 levels "Neutral","Somewhat agree",..: 4 3 2 1 4 5 1
Now, I would like to convert the agree
column to be an integer column using the mapping that I showed above.
I already searched these other questions about converting factor to integer, but they do not related to maintaining the factor ordering.
"How to convert a factor to an integer\numeric without a loss of information?"