data <- data.frame(col1 = c('0/1:60,4:0.044:4:0:1.00:2352,160:32:28', '0/1:58,4:0.041:4:0:1.00:2304,150:28:30', '0/1:25,2:0.095:1:1:0.500:908,78:9:16'))
data
col1
1 0/1:60,4:0.044:4:0:1.00:2352,160:32:28
2 0/1:58,4:0.041:4:0:1.00:2304,150:28:30
3 1/1:25,2:0.095:1:1:0.500:908,78:9:16
我想提取第二个冒号前的数字,即0/1
, 0/1
, 1/1
, 60,4
、58,4
、25,2
,并将其拆分为不同的列。
data
col1 col2 col3 col4 col5
1 0/1:60,4:0.044:4:0:1.00:2352,160:32:28 0 1 60 4
2 0/1:58,4:0.041:4:0:1.00:2304,150:28:30 0 1 58 4
3 1/1:25,2:0.095:1:1:0.500:908,78:9:16 1 1 25 2
最佳答案
strsplit
两次(一次使用 :
,再次使用 [/,]
)和 [
-提取工作像这样:
tmp <- do.call(rbind.data.frame, lapply(strsplit(data$col1, ":"), function(st) as.integer(unlist(strsplit(st, "[/,]")[1:2]))))
cbind(data, setNames(tmp, paste0("col", 1+seq_len(ncol(tmp)))))
# col1 col2 col3 col4 col5
# 1 0/1:60,4:0.044:4:0:1.00:2352,160:32:28 0 1 60 4
# 2 0/1:58,4:0.041:4:0:1.00:2304,150:28:30 0 1 58 4
# 3 0/1:25,2:0.095:1:1:0.500:908,78:9:16 0 1 25 2
https://stackoverflow.com/questions/67449805/
相关文章:
c++ - 在 C++ 中定义类枚举值的 std::vector 的缩写语法
amazon-web-services - CloudFormation YAML - 带有条件语句
django - 从在 WSL 上运行的 django 连接到在 Windows 上运行的 Post
react-native - 部署 key 为空 appcenter 代码推送 cli
reactjs - 在@auth0 中 Jest 模拟 Auth0Client
visual-studio-code - 删除 VSCode 中的 Sublime 文本主题