[英]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
你知道我怎么能做到这一点吗? 我一直在玩separate
和pivot_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.