gpt4 book ai didi

r - 基于 R 中的多个范围获取数据框中的行

转载 作者:行者123 更新时间:2023-12-03 16:21:41 25 4
gpt4 key购买 nike

假设我有这张 table

   a  b
1 5 12
2 6 17
3 7 28
4 8 12
5 9 17
6 10 28
7 15 12
8 25 14
9 13 29

还有另一个带有索引范围的表:
  start end
1 2 3
2 5 7

我想根据第二个表中的索引范围获取第一个表中的行,并使用组名进行区分,如下所示:
   a  b  group
2 6 17 1
3 7 28 1
5 9 17 2
6 10 28 2
7 15 12 2

我如何在 R 中实现这一目标?

最佳答案

我们可以子集 df1df2 获取行索引值使用 Map .

do.call(rbind, Map(function(x, y, z) transform(df1[x:y, ], group = z), 
df2$start, df2$end, seq_len(nrow(df2))))

或在 purrr :
purrr::map2_dfr(df2$start, df2$end, ~df1[.x:.y, ], .id = "group")


# group a b
#1 1 6 17
#2 1 7 28
#3 2 9 17
#4 2 10 28
#5 2 15 12

数据
df1 <- structure(list(a = c(5L, 6L, 7L, 8L, 9L, 10L, 15L, 25L, 13L), 
b = c(12L, 17L, 28L, 12L, 17L, 28L, 12L, 14L, 29L)),
class = "data.frame", row.names = c(NA, -9L))

df2 <- structure(list(start = c(2L, 5L), end = c(3L, 7L)),
class = "data.frame", row.names = c(NA, -2L))

关于r - 基于 R 中的多个范围获取数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61243268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com