有没有办法通过调节两列来扩展数据框中的行?

问题描述 投票:0回答:1

我的数据结构如下:

rad_1 分区编号 间隔
1 2 4
1 3 2
2 3 3

我想按划分和间隔扩展行。如果间隔为 4 并且除法为 2,则将行扩展八倍,因为 4 x 2 是 8。类似地,如果间隔为 2 并且除法为 3,则将行扩展 6 倍,因为 2 x 3 是 6。

我尝试过的代码:

dt1[, row_index := 1:.N]

dt1 <- dt1[rep(seq_len(.N), dt1$division), ]

dt1[, new_row := seq_len(division) - 1 + interval * (row_index - 1), by = row_index]

预期输出:

rad_1 分区编号 间隔
1 2 4
1 2 4
1 2 4
1 2 4
1 2 4
1 2 4
1 2 4
1 2 4
1 3 2
1 3 2
1 3 2
1 3 2
1 3 2
1 3 2
2 3 3
2 3 3
2 3 3
2 3 3
2 3 3
2 3 3
2 3 3
2 3 3
2 3 3
r data.table data-manipulation
1个回答
0
投票

我们可以使用

req(., times=)
为此:

dt1[rep(seq(.N), times = division_num * interval),]
#     rad_1 division_num interval
#     <int>        <int>    <int>
#  1:     1            2        4
#  2:     1            2        4
#  3:     1            2        4
#  4:     1            2        4
#  5:     1            2        4
#  6:     1            2        4
#  7:     1            2        4
#  8:     1            2        4
#  9:     1            3        2
# 10:     1            3        2
# ---                            
# 14:     1            3        2
# 15:     2            3        3
# 16:     2            3        3
# 17:     2            3        3
# 18:     2            3        3
# 19:     2            3        3
# 20:     2            3        3
# 21:     2            3        3
# 22:     2            3        3
# 23:     2            3        3
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.