对 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
我想根据一些任意映射将这些值分类在单独的列中。例如:
- 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
谢谢
这是一种选择:
使用映射创建命名向量:
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
我有以下示例数据框:
> 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
我想根据一些任意映射将这些值分类在单独的列中。例如:
- 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
谢谢
这是一种选择:
使用映射创建命名向量:
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