对 data.frame 中的值进行分类

Categorizing Values in a data.frame

我有以下示例数据框:

> 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 

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

所以之后,我会有以下内容:

  v cat
1 a   x
2 a   x
3 b   x
4 b   x
5 c   y
6 d   y
7 d   y

谢谢

这是一种选择:

使用映射创建命名向量:

x <- c(a = "x", b = "x", c = "y", d = "y")

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

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

这是一个使用 data.frame 的选项,您可以在其中编写映射:

library(plyr)

mapping = data.frame(v=letters[1:4], cat=c("x","x","y","y"))

join(df, mapping, by='v')
#  v cat
#1 a   x
#2 a   x
#3 b   x
#4 b   x
#5 c   y
#6 d   y
#7 d   y

或者直接根据R:

merge(df, mapping, by='v')
#  v cat
#1 a   x
#2 a   x
#3 b   x
#4 b   x
#5 c   y
#6 d   y
#7 d   y