将数字 ID 分配给数据文件中的变量值

数据挖掘 Python r spss
2022-02-27 09:08:16

我有一个问题,我有一个巨大的源数据文件,它显示所有变量值的文本而不是数字 ID。例如,我想将变量性别编码为 1 和 2,而不是写出“女性”和“男性”。对于 200 个其他变量也同样如此,其中一些变量具有多达数百个不同的变量值。

因此,手动执行此操作在这里并不是一个真正的选择。

谁能指出我在 R、SPSS 或 Python 中如何为每个不同的变量值分配数字 ID 的解决方案或提示?

我认为这将是其他人更普遍面临的问题,但我根本没有发现任何此类问题。

感谢您的任何帮助!

3个回答

您可以使用 Python sklearn 预处理LabelEncoder这是此页面中的一些示例代码以及我的评论:

# Make a Label Encoder instance
le = preprocessing.LabelEncoder()

# Show it the data it has to encode, so your column
le.fit(["paris", "paris", "tokyo", "amsterdam"])

# Get a ordered list of all classes it found
list(le.classes_)

# Transform a column/list
le.transform(["tokyo", "tokyo", "paris"]) 

# Transform encoding back to original
list(le.inverse_transform([2, 2, 1]))

在 R 中,您将分类值转化为一个因素。

dfr$id = as.numeric(factor(dfr$mycolumn))

SPSS 有一个 AUTORECODE 命令,它可以用一个命令完成整个工作。例如:

AUTORECODE vr1 to vr100 /into Kvr1 to Kvr100/PRINT.

这将采用文本变量 vr1 到 vr100 并将它们重新编码为新的数值变量 Kvr1 到 Kvr100,其中旧变量中的每个文本类别现在在新变量中自动编号,文本类别现在用作值标签。
PRINT子命令将在输出窗口中向您显示为每个变量中的文本类别选择的所有数字代码的列表。
请注意 - 使用TO约定(如“vr1 到 vr100”)仅在变量在文件中连续排序时有效。如果不是,则必须分别命名。