R:使用 seat from, seat to, n.tickets 创建座位号

R: create seat number using seat from, seat to, n.tickets

R:我有包含机票信息的数据集:section, row, seat from, seat to, n.tickets。我想使用 seat from 和 seat to 变量创建座位号,这将为我的数据添加更多行。 例子

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 命令但失败了。我不知道我是否需要循环。 非常感谢任何帮助!

使用 base 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",...")

选择:

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