如何在长格式时间序列数据中按时间点拆分输出?
How to split output by timepoint in long format time-series data?
我想使用 naniar
包中的 gg_miss_var() 来查看数据框中每个时间点的缺失数据量。数据框包含长格式的时间序列数据。
我有适用于整个 df 的代码(参见下面 代码 中的#1)。我如何扩展它以产生按 Timepoint 分割的输出(请参阅下面 Code 中的 #2 以了解我尝试的代码)?
澄清一下,我想做的基本上是使用每个时间点的数据(根据 Timepoint 在 Code 中重复 #1多变的)。因此,每个变量的缺失数据量将分别针对基线数据、year1 数据和 year2 数据呈现。目前,Code 中的#1 查看所有时间点(即基线、year1、year2)组合的缺失数据。
我将使用此数据 df 按 时间点 进行进一步分析,例如回归,因此理想情况下希望代码易于为这些目的操作。
下面是一个示例数据框(参见示例数据)。请注意,我正在使用的数据框要大得多(即 N = ~21,900)
代码
library(tidyverse)
library(naniar) # for gg_miss_var()
# 1. All missing data
gg_miss_var(df[,c("Score.1","Score.2","Score.3","Score.4")])
# 2. Missing data split by timepoint [does not work]
df %>%
group_by(Timepoint) %>%
gg_miss_var(.[,c("Score.1","Score.2","Score.3","Score.4")]) %>%
ungroup()
示例数据
df <- structure(list(ID = c(1L, 1L, 1L, 2L,
2L, 3L), Timepoint = c("baseline", "year1", "year2",
"baseline", "year1", "baseline"), Score.1 = c(NA, 6, 4, 4, 5, 5), Score.2 = c(11,
10, 8, 8, 8, 9), Score.3 = c(4, NA, 9, 10, 8, 6), Score.4 = c(22,
50, 33, 28, 27, 33)), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))
示例输出
下面是在代码中为#1 生成的输出。我想要的是以下副本,仅使用相应时间点(即基线、year1、year2)的数据。
你期待吗?
library(tidyverse)
library(naniar)
df %>% select(-ID) %>%
group_by(Timepoint) %>%
gg_miss_var(facet = Timepoint)
除非您更喜欢三个独立的地块。然后这样做:
df %>% select(-ID) %>%
group_by(Timepoint) %>%
group_map(~gg_miss_var(.x)+ggtitle(.y))
这是您期待的效果吗?
我想使用 naniar
包中的 gg_miss_var() 来查看数据框中每个时间点的缺失数据量。数据框包含长格式的时间序列数据。
我有适用于整个 df 的代码(参见下面 代码 中的#1)。我如何扩展它以产生按 Timepoint 分割的输出(请参阅下面 Code 中的 #2 以了解我尝试的代码)?
澄清一下,我想做的基本上是使用每个时间点的数据(根据 Timepoint 在 Code 中重复 #1多变的)。因此,每个变量的缺失数据量将分别针对基线数据、year1 数据和 year2 数据呈现。目前,Code 中的#1 查看所有时间点(即基线、year1、year2)组合的缺失数据。
我将使用此数据 df 按 时间点 进行进一步分析,例如回归,因此理想情况下希望代码易于为这些目的操作。
下面是一个示例数据框(参见示例数据)。请注意,我正在使用的数据框要大得多(即 N = ~21,900)
代码
library(tidyverse)
library(naniar) # for gg_miss_var()
# 1. All missing data
gg_miss_var(df[,c("Score.1","Score.2","Score.3","Score.4")])
# 2. Missing data split by timepoint [does not work]
df %>%
group_by(Timepoint) %>%
gg_miss_var(.[,c("Score.1","Score.2","Score.3","Score.4")]) %>%
ungroup()
示例数据
df <- structure(list(ID = c(1L, 1L, 1L, 2L,
2L, 3L), Timepoint = c("baseline", "year1", "year2",
"baseline", "year1", "baseline"), Score.1 = c(NA, 6, 4, 4, 5, 5), Score.2 = c(11,
10, 8, 8, 8, 9), Score.3 = c(4, NA, 9, 10, 8, 6), Score.4 = c(22,
50, 33, 28, 27, 33)), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))
示例输出
下面是在代码中为#1 生成的输出。我想要的是以下副本,仅使用相应时间点(即基线、year1、year2)的数据。
你期待吗?
library(tidyverse)
library(naniar)
df %>% select(-ID) %>%
group_by(Timepoint) %>%
gg_miss_var(facet = Timepoint)
除非您更喜欢三个独立的地块。然后这样做:
df %>% select(-ID) %>%
group_by(Timepoint) %>%
group_map(~gg_miss_var(.x)+ggtitle(.y))
这是您期待的效果吗?