我正在以广泛的格式处理不同个体的时间序列数据。时间点的数量因人而异。现在,问题是我需要每个人的最后一个元素。
我正在考虑使用列表作为我的小标题中的一列来存储时间序列序列。 (将每个时间点放入不同的列中可能不是一个好主意,因为可能有数百个可能的时间点,但一个人只能拥有其中少数几个的数据,但是,每个人的数据始终是连续测量的时间点。)
我们将其称为“column1”,即:
library(tibble)
# Create an example dataframe
df <- tibble(
column1 = list(1:3, 1:4, 4:8)
)
现在,为了效率和速度,我想使用矢量化,但是对于给定的数据结构是否可能? purrr 包中有一个名为 map() 的函数,使用它的操作如下:
library(purrr)
# Use the map function to select the last element of each vector
last_elements <- map(df$column1, ~ .x[length(.x)])
但这不是向量化,而是循环遍历列表的元素(存储为column1),对吗?
对于数据结构来说,是否有比列表作为列更好(即更快/更高效)的选择?或者这通常是处理这种情况的最佳方法?
library(tidyverse)
df %>%
mutate(column1 = map_int(column1, last))
# A tibble: 3 × 1
column1
<int>
1 3
2 4
3 8