例如,我想将"1-5“拆分为"1,2,3,4,5”,但在自己的列中有值。
| patient | Tooth |
|---------| ------|
|qw| 1-5|
|lo| 4-5|
|wq| 15|
|fg| 16:24|我想要的桌子
| patient | Tooth | Col1| Col2|
|---------| ------| ----| ----|
|qw| 1-5| 1 |2|
|lo| 4-5| 4 | 5|
|wq| 15| 15 |
|fg| 16:24| 16 | 17发布于 2022-07-16 04:15:26
我用gsub将"1-5“转换为"1:5”,后者可以作为R法律序列进行评估。然后将其作为数据框架(如Tooth 2)中的已编译列添加进来,并将其分隔为带有dplyr::分离的列。
df <- read.table(text="patient Tooth
qw 1-5
lo 4-5
wq 15
fg 16:24", header=TRUE)
df$Tooth <- gsub("-", ":", df$Tooth)
df$Tooth2 <- sapply(df$Tooth, function(x) paste(eval(parse(text=x)), collapse="_"))
library(dplyr)
df %>% separate(Tooth2, into=paste0("Col", 1:9), sep="_")
patient Tooth Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9
1 qw 1:5 1 2 3 4 5 <NA> <NA> <NA> <NA>
2 lo 4:5 4 5 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
3 wq 15 15 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
4 fg 16:24 16 17 18 19 20 21 22 23 24https://stackoverflow.com/questions/73001326
复制相似问题