我的数据如下所示:
library(dplyr)
library(tidyr)
a <- data_frame(type=c("A", "A", "B", "B", "C", "D"))
print(a)
# A tibble: 6 x 1
type
<chr>
1 A
2 A
3 B
4 B
5 C
6 D
其中type
包含分类信息。我正在尝试将每个类别转换type
为自己的列,如果存在 a,则编码为 1 type
,如果不存在,则编码为 0;因此,最终结果将如下所示:
b <- data_frame(A=c(1, 1, 0, 0, 0, 0),
B=c(0, 0, 1, 1, 0, 0),
C=c(0, 0, 0, 0, 1, 0),
D=c(0, 0, 0, 0, 0, 1))
# A tibble: 6 x 4
A B C D
<dbl> <dbl> <dbl> <dbl>
1 1. 0. 0. 0.
2 1. 0. 0. 0.
3 0. 1. 0. 0.
4 0. 1. 0. 0.
5 0. 0. 1. 0.
6 0. 0. 0. 1.
我尝试了以下方法:
a$dat <- 1
spread(a, type, dat)
但是,它不起作用,因为某些类别有多个实例。任何帮助,将不胜感激。谢谢!