代码之家  ›  专栏  ›  技术社区  ›  Rafael Díaz

将虚拟数据帧转换为数据帧

  •  2
  • Rafael Díaz  · 技术社区  · 6 年前

    我有一个维度的虚拟数据框 ,我想对变量进行分组 x1j 在里面 x1 x2j 在里面 x2 x3j 在里面 x3 . 创建的数据帧

    set.seed(123)
    df <- data.frame(replicate(4,as.factor(sample(1:3,8,rep=TRUE))))
    
    library(dummies)
    df.dummy <- dummy.data.frame(df)
    

    我的虚拟数据帧

    df.dummy
      X11 X12 X13 X21 X22 X23 X31 X32 X33 X41 X42 X43
    1   1   0   0   0   1   0   1   0   0   0   1   0
    2   0   0   1   0   1   0   1   0   0   0   0   1
    3   0   1   0   0   0   1   1   0   0   0   1   0
    4   0   0   1   0   1   0   0   0   1   0   1   0
    5   0   0   1   0   0   1   0   0   1   1   0   0
    6   1   0   0   0   1   0   0   0   1   1   0   0
    7   0   1   0   1   0   0   0   1   0   0   0   1
    8   0   0   1   0   0   1   0   0   1   0   0   1
    

    预期产量

    df
      X1 X2 X3 X4
    1  1  2  1  2
    2  3  2  1  3
    3  2  3  1  2
    4  3  2  3  2
    5  3  3  3  1
    6  1  2  3  1
    7  2  1  2  3
    8  3  3  3  3
    

    如果我有一个数据框,其中的列是factors类型的,我可以创建一个伪数据框,并使用函数虚拟数据框(),是否有反作用?从虚拟到分组数据框.

    1 回复  |  直到 6 年前
        1
  •  6
  •   Zheyuan Li    6 年前
    df.dummy <- structure(list(X11 = c(1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L), X12 = c(0L, 
    0L, 1L, 0L, 0L, 0L, 1L, 0L), X13 = c(0L, 1L, 0L, 1L, 1L, 0L, 
    0L, 1L), X21 = c(0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L), X22 = c(1L, 
    1L, 0L, 1L, 0L, 1L, 0L, 0L), X23 = c(0L, 0L, 1L, 0L, 1L, 0L, 
    0L, 1L), X31 = c(1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L), X32 = c(0L, 
    0L, 0L, 0L, 0L, 0L, 1L, 0L), X33 = c(0L, 0L, 0L, 1L, 1L, 1L, 
    0L, 1L), X41 = c(0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L), X42 = c(1L, 
    0L, 1L, 1L, 0L, 0L, 0L, 0L), X43 = c(0L, 1L, 0L, 0L, 0L, 0L, 
    1L, 1L)), .Names = c("X11", "X12", "X13", "X21", "X22", "X23", 
    "X31", "X32", "X33", "X41", "X42", "X43"), class = "data.frame",
    row.names =  c("1", "2", "3", "4", "5", "6", "7", "8"))
    
    ASSIGN <- gl(4, 3)  ## 4 factor variable; each 3 levels
    as.data.frame(lapply(split.default(df.dummy, ASSIGN), max.col))
    #  X1 X2 X3 X4
    #1  1  2  1  2
    #2  3  2  1  3
    #3  2  3  1  2
    #4  3  2  3  2
    #5  3  3  3  1
    #6  1  2  3  1
    #7  2  1  2  3
    #8  3  3  3  3
    

    还有其他方法来生成 ASSIGN . 基本上它告诉我们如何对 df.dummy 输入正确的因子变量。