【问题标题】:R - Split one column into two when the divider is a dotR - 当分隔符是一个点时,将一列分成两列
【发布时间】:2021-04-06 20:47:58
【问题描述】:

当分隔符是点时,我试图将一列拆分为两个单独的列。

按照这个example,我先试过了:

library(tidyverse)

df1 <- data.frame(Sequence.Name= c(2.1, 2.1, 2.1),
                  var1 = c(1, 1, 0))
df1$Sequence.Name %>% 
  as.character %>%
  str_split_fixed(".",2) %>%
  head
#>      [,1] [,2]
#> [1,] ""   ".1"
#> [2,] ""   ".1"
#> [3,] ""   ".1"

reprex package (v0.3.0) 于 2021-04-05 创建

但这不是我想要的:第一列是空的,第二列还有点。

按照我上面链接的帖子中的cmets,我尝试添加fixed="."fixed=TRUE,但它似乎不起作用:

library(tidyverse)

df1 <- data.frame(Sequence.Name= c(2.1, 2.1, 2.1),
                  var1 = c(1, 1, 0))
df1$Sequence.Name %>% 
  as.character %>%
  str_split_fixed(".",fixed=".",2) %>%
  head
#> Error in str_split_fixed(., ".", fixed = ".", 2): unused argument (fixed = ".")

reprex package (v0.3.0) 于 2021-04-05 创建

【问题讨论】:

    标签: r


    【解决方案1】:

    这样的?

    df1 %>% separate(Sequence.Name, into = c("Col1", "Col2"))
    
      Col1 Col2 var1
    1    2    1    1
    2    2    1    1
    3    2    1    0
    

    【讨论】:

      【解决方案2】:

      也可以在base Rread.table 中执行此操作

      cbind(read.table(text = as.character(df1$Sequence.Name), sep=".", 
               header = FALSE, col.names = c("Col1", "Col2")), df1['var1'])
      #  Col1 Col2 var1
      #1    2    1    1
      #2    2    1    1
      #3    2    1    0
      

      【讨论】:

      • 使用read.table 多么聪明的方法!
      【解决方案3】:

      这是一个使用tstrsplitdata.table 选项

      > setDT(df1)[, c(lapply(tstrsplit(Sequence.Name, "\\."), as.numeric), .(var1))]
         V1 V2 V3
      1:  2  1  1
      2:  2  1  1
      3:  2  1  0
      

      【讨论】:

        【解决方案4】:

        这个也有帮助:

        library(tidyr)
        
        df1 %>%
          extract(col = Sequence.Name, into = c("Sequence", "Name"), regex = "(.).(.)")
        
          Sequence Name var1
        1        2    1    1
        2        2    1    1
        3        2    1    0
        
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-05-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-22
          • 1970-01-01
          • 1970-01-01
          • 2021-08-31
          相关资源
          最近更新 更多