【发布时间】:2022-01-08 17:20:49
【问题描述】:
我有一个包含试验列、索引列和时间序列 (Fy) 数据列的数据框。我想在每个试验中独立使用 filtfilt(),结果将是过滤了时间序列数据列的原始数据框。
示例数据集(df):
| Trial | Index | Fy |
|---|---|---|
| 1 | 1 | 1.3 |
| 1 | 2 | 1.4 |
| 1 | 3 | 1.5 |
| 1 | 4 | 1.6 |
| 2 | 5 | 2.4 |
| 2 | 6 | 2.5 |
| 2 | 7 | 2.6 |
| 2 | 8 | 2.7 |
我的过滤器(来自信号包):
bf <- butter(4, 30/(1000/2), type="low")
我可以在一个完整的列上使用 filtfilt(),例如:
df$Fy <- filtfilt(bf, df$Fy)
但是,这不允许过滤器识别出它们是列中的不同试验,并且每个试验都需要单独过滤。
我试过了:
df %>%
group_by(Trial) %>%
filtfilt(bf, df$Fy) #filters specific data column
然后我尝试通过试验创建索引列表:
index <- df %>%
group_by(Trial) %>%
summarise(Indices = paste(sort(unique(Index)), collapse = " "))
并为我要过滤的特定列尝试了 lapply:
df$Fy <- lapply(index, function(x) filtfilt(bf, x))
【问题讨论】:
-
不知道你的输入数据,也不知道你期望的结果,仅仅描述“效果不好”的问题,这将很难帮助你。请阅读有关如何提出好问题的大量建议,然后更新您的帖子。
-
什么是 filtfilt? See here 制作一个更易于人们帮助的可重现示例。
-
感谢您的反馈,我已经进行了编辑以澄清。请让我知道其他问题。