问题描述
这是与其他帖子类似的问题,但我正在寻找一种比重新编码和类似解决方案更自动化的解决方案。
我有一个包含许多类别的列,即城市,并想在R中创建一个新列,该列会自动将城市分配给数值,如下所示:
City CityCode
New York 0
New York 0
Boston 1
Boston 1
Chicago 2
New Haven 3
我大约有1000个城市,因此单独编码没有意义。
解决方法
data$CityCode = as.integer(factor(data$City))
将起作用,默认情况下按字母顺序对城市进行排序。为了使它们按照在数据中出现的顺序排列,data$CityCode = as.integer(factor(data$City,levels = unique(data$City)))
。
很少有建模应用程序是个好主意。 (我无法考虑任何问题...)请确保您知道自己在做什么。
,另一种选择是match
data$CityCode <- with(data,match(City,unique(City)))