R:为数据帧中的每个类别生成虚拟向量

时间:2016-06-20 13:44:55

标签: r

我遇到了R:

的问题

让我们假设一个名为df的数据框,其中包含不同个体的信息(例如年龄,性别)和表示相应国家的变量。

现在,我想为每个人提供与国家一样多的行。关于每个人的每个添加行,不同个体(此处:年龄,性别)的信息应该相同。但是,每行应包含一个国家/地区名称。此外,还应包含一个虚拟变量,如果它是具有实际国家/地区的行,则取值为1。

换句话说,我们从一个包含个人及其国家信息的数据集开始。之后,对于每个人,每个国家都有一行和一个虚拟变量,表明哪一个是"正确的"国家。+

如果有5个人和5个国家:原始数据集应包含5行,转换后的数据集25(25 * 25)。

有一个很好的方法吗?

3 个答案:

答案 0 :(得分:1)

您需要dummyVars中的caret功能。 http://topepo.github.io/caret/preprocess.html

答案 1 :(得分:1)

假设您的数据框名为df,您的国家/地区变量为Country。 以下内容将您的国家/地区变量转换为虚拟变量:

df1 <- data.frame(df,model.matrix(~df$Country+0))

那么重复每一行df1五次(或者有多少次国家)就足够了吗?

df2 <- [rep(1:nrow(df1),length(unique(df$Country))),]

答案 2 :(得分:0)

非常感谢您的建议!最后,我找到了另一种方法来实现这一点:只需为所有观察添加一个变量(例如id)为1。然后使用包tidyr中的命令complete(数据,变量组合,fill = list(id = 0))