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
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