我有一个数据集,其格式如下所示:
a1 a2 a3 | class
0 0 0 | c1
0 0 1 | c2
0 1 1 | c3
我想拆分专栏' class'基于列的值。我希望输出看起来像这样:
a1 a2 a3 | c1 c2 c3
0 0 0 | 1 0 0
0 0 1 | 0 1 0
0 1 1 | 0 0 1
这里因为' class'包含3个值,我想删除列类并添加3列,每列一个。由于第一行有class = c1,在输出数据帧中,对于第一行,我想要c1 = 1和c2,c3 = 0.
这样做的最佳方式是什么?
我目前的代码如下所示:
#read data
df = df = read.table('source')
names(df) = c("a1", "a2", "a3", "class")
#get new columns to be added
c_data = df['class']
c_types = unique(c_data)
我不太清楚如何从这里开始。
我想到的一个解决方案是我可以为每个c_type值创建3个数组(因为我知道唯一元素的数量= 3),并通过检查c_data == c_type来指定值,并将数组作为列添加到数据框中但必须有一个更好的方法来做到这一点,因为这很难做到如果#class;'有很多价值观。