现在我正在尝试从具有两个以上向量的变量中创建数据集中的新虚拟变量。更具体地说,我的数据集有一个“状态”变量,我想做一个虚拟,其中1 =北方的状态,0 =所有其他状态。这是数据集的一部分(它是一个非常大的集合,因此我只包含基本数据):
Year StateICP 1 1940 71 2 1940 21 3 1940 22 4 1940 32 5 1940 18 6 1940 22 7 1940 45 8 1940 40 9 1940 33
所以我想要做的是创建一个新的列(称为“North”),如果StateICP = 21,22,40或45,则新变量将= 1,否则将为0.我说,这是一个非常大的数据集(超过1000000次观察),所以我无法手动逐行输入。我尝试了一个ifelse函数,但这只给了我错误。
我确信这不是那么复杂,但我对R来说相当新。我知道如何正常创建一个虚拟变量,但是我被困在这里。任何帮助将不胜感激!谢谢!
答案 0 :(得分:2)
因此,创建简单的数据集来复制上面的内容:
df <- data.frame(Year = rep(1940,500), StateICP = sample(1:100, 500, TRUE))
这将创建一个data.frame,其中包含您描述的列和500条记录。 StateICP值是随机生成的1到100之间的整数。如果我们想编码布尔值,我们可以简单地添加一个新列:
df$boolean <- df$StateICP %in% c(21, 22, 40, 45)
如果我们想要将它们专门编码为0,1如您所述,那么您可以使用ifelse:
df$dummy <- ifelse(df$StateICP %in% c(21, 22, 40, 45), 1, 0)
您必须确保在ifelse中使用向量(因为它不接受数据参数)。