R:我有一个数据集,其中包含票证信息:部分,行,座位从,座位到n。票证。我想使用座位从和座位到变量来创建座位号,这将为我的数据添加更多行。 例子
data: event , section , row, seat from , seat to, price, n.tickets
1, A, 10, 6, 8, 120, 3
mydata: event , section , row, seat number price, n.tickets
1, A, 10, 6, 120, 3
1, A, 10, 7, 120, 3
1, A, 10, 8, 120, 3
Mydata是我要创建的一个。我在R中厌倦了rbind命令,但失败了。我不知道是否需要循环。 任何帮助深表感谢!
答案 0 :(得分:0)
使用基数R可以执行类似的操作
do.call("rbind", lapply(split(dd, 1:nrow(dd)), function(x) {
data.frame(dd[1:3], seat=dd[1,4]:dd[1,5], dd[6:7])
}))
经过测试
dd <- read.csv(text="event , section , row, seat from , seat to, price, n.tickets
1, A, 10, 6, 8, 120, 3")
在这里,我们将data.frame按行拆分,然后通过扩展座位号创建一个新的data.frame,然后将所有data.frame与do.call("rbind",...")
答案 1 :(得分:0)
替代:
dd <- read.csv(text="event , section , row, seat from , seat to, price, n.tickets
1, A, 10, 6, 8, 120, 3")
seats = dd$seat.from:dd$seat.to
dd[seq_along(seats),] <- dd[1,]
dd %>% dplyr::select(-one_of("seat.from","seat.to")) %>% mutate(seats = seats)
# event section row price n.tickets seats
#1 1 A 10 120 3 6
#2 1 A 10 120 3 7
#3 1 A 10 120 3 8