我有以下示例数据框:
> 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
谢谢
答案 0 :(得分:4)
这是一个选项:
使用映射创建一个命名向量:
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
答案 1 :(得分:2)
以下是使用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