我正在使用iris
数据集,首先,我对该数据集进行了一些操作,并将其制成以下形式
D1 = iris[,c(1,2,5)]
D2 = iris[,c(3,4,5)]
colnames(D1)[1:2] = c('Length','Width')
colnames(D2)[1:2] = c('Length','Width')
D1 = D1 %>% mutate(Part = 'Sepal')
D2 = D2 %>% mutate(Part = 'Petal')
D = rbind(D2,D1)
看起来像
Species Part Length Width
1 setosa Petal 1.4 0.2
2 setosa Petal 1.4 0.2
3 setosa Petal 1.3 0.2
4 setosa Petal 1.5 0.2
5 setosa Petal 1.4 0.2
6 setosa Petal 1.7 0.4
我想使用中的spread()
函数tidyr
使数据集最终看起来像以下格式
Measure Part setosa versicolor virginica
Length Petal 1.4 4.7 6.0
我所做的是以下内容:
D4 = D %>% gather(Measure,value,3:4)
这使
Species Part Measure value
1 setosa Petal Length 1.4
2 setosa Petal Length 1.4
3 setosa Petal Length 1.3
4 setosa Petal Length 1.5
5 setosa Petal Length 1.4
6 setosa Petal Length 1.7
我尝试将行号添加到“D4”,因为我发现有时该spread()
函数会导致出现一些错误,如此处所述。我不知道是否有一种巧妙的方法可以spread()
用来实现这个目标。