【问题标题】:Splitting a vector in a dataframe into column vectors将数据框中的向量拆分为列向量
【发布时间】:2015-06-04 20:41:02
【问题描述】:

我在数据框中有一个向量,我想将其拆分为多个列向量,如下所示:

region<- c("US","India", "France", "Greece")
id<- c(1, 2,3,4)
df1<- data.frame(region,id)

我想按如下方式拆分数据框:

region.US  region.India region.France region.Greece  id 
  1            0              0            0          1
  0            1              0            0          2
  0            0              1            0          3
  0            0              0            1          4

关于如何做到这一点的任何建议?

【问题讨论】:

    标签: r split dataframe


    【解决方案1】:

    要获得准确的输出:

    cbind(setNames(as.data.frame(diag(nrow(df1))), paste0("region.", df1$region)),
          df1[,"id", drop=FALSE])
    #   region.US region.India region.France region.Greece id
    # 1         1            0             0             0  1
    # 2         0            1             0             0  2
    # 3         0            0             1             0  3
    # 4         0            0             0             1  4
    

    【讨论】:

      【解决方案2】:

      试试这个,即使它不是你想要的。

      t(table(df1))
         region
      id  France Greece India US
        1      0      0     0  1
        2      0      0     1  0
        3      1      0     0  0
        4      0      1     0  0
      

      【讨论】:

        【解决方案3】:

        这几乎可以工作(列的顺序不相同,并且 列名不是点分隔的):

        df1 <- data.frame(region=c("US","India", "France", "Greece"),
                         id=1:4)
        data.frame(model.matrix(~region-1,df1),id=df1$id)
        

        【讨论】:

          猜你喜欢
          • 2021-12-29
          • 1970-01-01
          • 1970-01-01
          • 2014-02-18
          • 1970-01-01
          • 2014-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多