【发布时间】:2019-09-29 22:22:44
【问题描述】:
我想处理每一行的数据。假设我们在 4 天内收集了两个“cyl”的“mpg”值。我想得出相对于一天的最小 mpg 值)
原始数据
** 天,cyl,mpg**
- 1,4,34.4
- 2,4,21.3
- 3,4,23.3
- 4,4,25.0
- 1,3,23.0
- 2,3,27.0
- 3,3,18.3
- 4,3,17.3
预期输出
** day,cyl,mpg,min_mpg**
- 1,4,34.4,34.4
- 2,4,21.3,21.3
- 3,4,23.3,21.3
- 4,4,25.0,21.3
- 1,3,23.0,23.0
- 2,3,27.0,23.0
- 3,3,18.3,18.3
- 4,3,17.3,17.3
我给出了以下几点想法......
-
For 循环处理(这确实不是最有效的选项)
-
APPLY 和 SHIFT 函数(保留上一行的最小值 在全局变量中处理并将每个 GROUP 重置为 NA。一世 未能将最小 mpg 值保留到全局变量中)
-
APPLY 和 SHIFT 函数(将“-1”一直移动到第 1 行 每一行。在 APPLY 函数中放置一个循环。这个选项 可能会做更多的冗余处理)
我尝试使用下面博客中描述的 rowShift 函数,但我的要求是我需要动态移位 Use a value from the previous row in an R data.table calculation
是否有任何“矢量化”选项可用?还是传统的 FOR LOOP 将是唯一的选择?我更喜欢使用 base R 的选项(数据框或数据表)
【问题讨论】:
标签: r