【发布时间】:2019-03-15 22:27:31
【问题描述】:
假设我有一个包含 4 行和 3 个变量的数据集 (ds),如下所示:
ds
x1 x2 x3
1 0 0
0 0 1
0 1 0
0 0 1
如何将“1”更改为每列的唯一值并将它们组合成一列?
所以,第一步:
x1 x2 x3
1 0 0
0 0 3
0 2 0
0 0 3
然后,第二步(创建x4):
x1 x2 x3 x4
1 0 0 1
0 0 3 3
0 2 0 2
0 0 3 3
我有比这更多的变量,我只是想知道如何最小化我写的行数,所以它不像 10+ 行。
【问题讨论】:
-
这几乎肯定是个坏主意;
x1..x3看起来像底层分类变量x4的虚拟变量/单热变量。这听起来像是一个 [XY 问题[(meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你能解释为什么你需要这样做吗?您总是可以将每组假人改回它们的分类变量。 -
所以记录数据的方式有问题。因此,对于从 1 到 7 的单项测量,每个值都用它自己的列记录。因此,任何以 3 为响应的人在第三列被计为 1,在第六列的响应为 6 作为 1,依此类推。所以我需要将它们全部折叠到具有适当值的单列中。
-
Daniel:这不是“如何记录数据的问题”,这是一种非常标准的技术(单热/虚拟变量编码)。 (例如,如果信息来自多选表格/调查/网络表格)。所以你只是问“如何在数据帧列中反转'one-hot'编码?”
-
smci:是的,谢谢,我现在才意识到,在与数据集的原始所有者交谈后,他们没有意识到这是他们所做的。这是一个“问题”,因为那不是故意的。但是,是的,非常感谢您让我知道它的技术术语。
标签: r data-cleaning