处理稍微混乱的数据,其中一个单元格包含一系列值,如下所示: -
Code Flag
69660-69663 1
69666-69667 2
所需的输出是: -
Code Flag
69660 1
69660 1
69660 1
69660 1
69666 2
69667 2
是否有一个可以处理值范围并将其拆分为不同观察值的包?
我尝试了这个解决方案: -
mydb2<-cSplit(mydb, "Code", sep = "-", direction = "long")
这只是将值分成两个不同的观察而不是观察范围。
答案 0 :(得分:2)
您可以尝试使用我的“splitstackshape”软件包中的cSplit
,如下所示:
library(splitstackshape)
cSplit(mydf, "Code", "-")[, list(Code = Code_1:Code_2), by = Flag]
## Flag Code
## 1: 1 1
## 2: 1 2
## 3: 1 3
## 4: 2 5
## 5: 2 6
## 6: 2 7
## 7: 2 8
答案 1 :(得分:0)
这是一种可能性 -
f <- function(x, y) {
s <- strsplit(as.character(x), "-")[[1]]
data.frame(Code = s[1]:s[2], Flag = y)
}
do.call(rbind, Map(f, df$Code, df$Flag))
# Code Flag
# 1 69660 1
# 2 69661 1
# 3 69662 1
# 4 69663 1
# 5 69666 2
# 6 69667 2