r - 如何在 R 中的数据框中重新编码数据

可以推广到多列的数据示例如下

id  colour  zm          cinema  pen     wm          monitor mn
1   blue    good        a       wood    bad         24      very good
2   Yellow  bad         b       metal   good enough 23      good
3   Red     good enough d       plastic bad         27      good enough

我要得到下表

id  colour  zm  cinema  pen     wm  monitor mn
1   blue    B   a       wood    D   34      A
2   Yellow  D   b       metal   C   23      B
3   Red     C   d       plastic D   27      C

非常好= A,好= B,足够好= C,差= D。 我知道这可以通过“变异”来完成,但很难在数据框架内完成。

最佳答案

我们可以使用命名向量来改变值

nm1 <- setNames(LETTERS[1:4], c("very good", "good", "good enough", "bad"))
library(dplyr)
df2 <- df1 %>%
     mutate(across(c(zm, wm, mn), ~ nm1[.]))

-输出

df2
#  id colour zm cinema     pen wm monitor mn
#1  1   blue  B      a    wood  D      24  A
#2  2 Yellow  D      b   metal  C      23  B
#3  3    Red  C      d plastic  D      27  C

数据

df1 <- structure(list(id = 1:3, colour = c("blue", "Yellow", "Red"), 
    zm = c("good", "bad", "good enough"), cinema = c("a", "b", 
    "d"), pen = c("wood", "metal", "plastic"), wm = c("bad", 
    "good enough", "bad"), monitor = c(24L, 23L, 27L), mn = c("very good", 
    "good", "good enough")), class = "data.frame", row.names = c(NA, 
-3L))

https://stackoverflow.com/questions/65799299/

相关文章:

javascript - 对象可能是 'null' : TypeScript, React useR

python - 如何连接来自 3 个小整数的字节以生成由 Python 中的这些字节表示的更大数字

java - Java 是否根据结果假定类型?

react-native - react native : Refresh Controll not

python - 如何从时间序列数据中选择前 n 列而不是在 pandas 中使用 nlargest

reactjs - 有没有 Ionicons : Icon props?

list - 在 Elixir 中使用类型规范中的原子列表

vuejs3 - vue3 中 shallowReactive 和 shallowRef 的区别?

javascript - 句号、单词和冒号的正则表达式

arrays - 检查列表和数组是否相等 F#