首页 > 解决方案 > 从 r 中的变量选项创建带有 1 和 0 的变量

问题描述

我正在尝试从我的数据框中的一个选项中创建新变量。这是我的初始数据框:

d1 <- data.frame("id" = c(1,1,2,2,3,4,5), "type" = c("A","B","C","C","A","B","C"))

  id  type
1  1    A
2  1    B
3  2    C
4  2    C
5  3    A
6  4    B
7  5    C

因此,如果想根据"type"for each的值创建新变量id,我想获得这种数据框:

d2 <- data.frame("id" = c(1,1,2,2,3,4,5), "type" = c("A","B","C","C","A","B","C"),
                 "type.A" = c(1,0,0,0,1,0,0), "type.B" = c(0,1,0,0,0,1,0),
                 "type.C" = c(0,0,1,1,0,0,1))

  id type type.A type.B type.C
1  1    A      1      0      0
2  1    B      0      1      0
3  2    C      0      0      1
4  2    C      0      0      1
5  3    A      1      0      0
6  4    B      0      1      0
7  5    C      0      0      1

如果特定的 等于,则1在新变量中给出(type.A在这种情况下),否则给出。由于这是大数据分析中的常见问题(我认为),我想知道是否有解决此问题的功能。"type""id"A0

标签: rdataframebinary

解决方案


cbind(d1, setNames(data.frame(+sapply(unique(d1$type), function(x)
    d1$type == x)), unique(d1$type)))
#  id type A B C
#1  1    A 1 0 0
#2  1    B 0 1 0
#3  2    C 0 0 1
#4  2    C 0 0 1
#5  3    A 1 0 0
#6  4    B 0 1 0
#7  5    C 0 0 1

推荐阅读