繁体   English   中英

在 R 中同时拆分两列

[英]Split two columns simultaneously in R

我想从这个 go :

    data <- data.frame(sequence = "abc", position = "1;2", probability = "0;1")
        
    > data
          sequence position probability
        1      abc      1;2         0;1

对此:

result <- data.frame(sequence = "abc", position = c(1,2), probability = c(0,1))

    > result
      sequence position probability
    1      abc        1           0
    2      abc        2           1

你知道我怎么能做到这一点吗? 我一直在玩separatepivot_longer ,但我觉得必须有一种更聪明的方法来实现最终结果。

谢谢您的帮助!

您可以使用separate_rows

library(tidyverse)

data <- data.frame(sequence = "abc", 
                      position = "1;2", 
                      probability = "0;1")


data %>% 
  separate_rows(c(position, probability), sep = ";")
#> # A tibble: 2 x 3
#>   sequence position probability
#>   <chr>    <chr>    <chr>      
#> 1 abc      1        0          
#> 2 abc      2        1

由代表 package (v2.0.0) 于 2021 年 4 月 22 日创建

这是一个data.table选项

library(data.table)
setDT(data)[, lapply(.SD, function(x) unlist(strsplit(x, ";"))), sequence]

这使

   sequence position probability
1:      abc        1           0
2:      abc        2           1

cSplit的一个选项

library(data.table)
cSplit(data, c('position', 'probability'), sep=";", "long")
#   sequence position probability
#1:      abc        1           0
#2:      abc        2           1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM