r - 如何使用 **for** 循环清理大型数据集

标签 r function loops for-loop lapply

我一直在为这个问题而苦恼,我希望得到你的帮助。 为了说明这一点,我创建了两个虚拟数据集(数据 A 和数据 B)。

dataA <- data.frame(TimeofLife = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
                    TimeofDeath = c(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18))
dataB <- data.frame(Time = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
                    Value = c(500, 510, 520, 530, 540, 500, 510, 520, 530, 540, 500, 510, 520, 530, 540))

下面是 dataA 的前 6 个值

  TimeofLife TimeofDeath
1          1           4
2          2           5
3          3           6
4          4           7
5          5           8
6          6           9

和数据B

   Time Value
1    1   500
2    2   510
3    3   520
4    4   530
5    5   540
6    6   500

我想使用 dataA 中的信息在 dataB 中创建子集。 例如,dataA 的第一行的值为 (1, 4)。使用这些作为值的范围,我想为 dataB 创建一个子集,如下所示:

  Time Value
1    1   500
2    2   510
3    3   520
4    4   530

现在,我遇到的问题是,在我的真实数据集中,我需要创建许多子集(数千个以上),而我无法手动执行此操作。也就是说,我无法对每个子集进行硬编码,因为那将是一场噩梦并且容易出错。

我想要做的是创建一个 for 循环,我可以用它从 dataA 中提取我需要的信息,并使用它在 dataB 中创建子集。

我想要的代码的逻辑看起来像这样(这是废话,因为我不知道如何编码):

for(row i in dataA)
  {find the values of TimeofLife and Time of Death in row dataA[i],
  then use those values to filter a subset of dataB, 
  extract and save this subset as a dataframe}

非常感谢。

最佳答案

考虑使用 maply 或其包装器 Map 进行元素明智循环来构建数据框列表:

proc_subset <- function(x, y) {
   dataB[dataB$Time >= x & dataB$Time <= y,]
}

# BUILD LIST OF SUBSET DATA FRAMES
subset_list <- Map(proc_subset, dataA$TimeofLife, dataA$TimeofDeath)

# NAME EACH ELEMENT
data_names <- paste("data", dataA$TimeofLife, dataA$TimeofDeath, sep="_")
subset_list <- setNames(subset_list, data_names)


# OUTPUT EACH DF ELEMENT
subset_list$data_1_4
subset_list$data_2_5
subset_list$data_3_6
...

关于r - 如何使用 **for** 循环清理大型数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61965446/

相关文章:

r - 如何根据中心和半径在 R 中绘制三维球体?

javascript - Private V.S. 令人困惑的例子<Javascript Patterns> 书中的公共(public)方法?

loops - 无法在 Flutter 中过滤位置

R:我可以让函数的执行环境永久化吗?

磁悬浮管(%>%)具有不良行为的原因?

javascript - 将 "this"替换为实际值

javascript - jQuery 函数在第一次单击时部分触发,在第二次单击时起作用

c# - 多个线程中的for循环

javascript - 在 Google Apps 脚本中循环,处理错误, fatal error ,停止脚本,循环停止

r - R 是否支持多级命名空间?