将数据框列中的因子替换为R中的数值?

时间:2015-07-24 22:17:19

标签: r

我有一个数据框df1,以便:

group=c("Group 1", "Group 2", "Group3","Group 1", "Group 2", "Group3")
year=c("2000","2000","2000", "2015", "2015", "2015")
items=c(12, 10, 15, 5, 10, 7)
df1=data.frame(group, year, items)

在"组"栏中,如何用数值替换每个因子?例如,我想替换"第1组" 0,"第2组" 5,"第3组"用3看起来像这样:

  group year items
1     0 2000    12
2     5 2000    10
3     3 2000    15
4     0 2015     5
5     5 2015    10
6     3 2015     7

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用as.integer

transform(df1, group=as.integer(group))
#   group year items
# 1     1 2000    12
# 2     2 2000    10
# 3     3 2000    15
# 4     1 2015     5
# 5     2 2015    10
# 6     3 2015     7

为了回应更新的问题,您可以使用因子

的整数来表示键和索引
key <- c(0, 5, 3)
transform(df1, group=key[as.integer(group)])

#   group year items
# 1     0 2000    12
# 2     5 2000    10
# 3     3 2000    15
# 4     0 2015     5
# 5     5 2015    10
# 6     3 2015     7

正如@SimonG所说,您可以使用factor及其参数levels重新排序您的因素,

答案 1 :(得分:1)

使用辅助命名矢量“g”转换矢量“group”:

group <- c("Group 1", "Group 2", "Group3","Group 1", "Group 2", "Group3")
g <- c(0, 5, 3)
names(g) <- c("Group 1", "Group 2", "Group3")
new_group <- g[group]