在data.frame中对值进行分类

one*_*elf 3 r data-cleaning

我有以下示例数据框:

> df <- data.frame(v=c("a", "a", "b", "b", "c", "d", "d"))
> df
  v 
1 a 
2 a 
3 b 
4 b 
5 c 
6 d 
7 d 
Run Code Online (Sandbox Code Playgroud)

我想根据一些任意映射将这些值分类在单独的列中。例如:

  • a-> x
  • b-> x
  • c-> y
  • d-> y

所以之后,我将得到以下内容:

  v cat
1 a   x
2 a   x
3 b   x
4 b   x
5 c   y
6 d   y
7 d   y
Run Code Online (Sandbox Code Playgroud)

谢谢

tal*_*lat 5

这是一个选择:

使用映射创建命名向量:

x <- c(a = "x", b = "x", c = "y", d = "y")
Run Code Online (Sandbox Code Playgroud)

然后使用命名向量添加新列:

df$cat <- x[df$v]
df
#  v cat
#1 a   x
#2 a   x
#3 b   x
#4 b   x
#5 c   y
#6 d   y
#7 d   y
Run Code Online (Sandbox Code Playgroud)