【发布时间】:2020-11-02 00:29:46
【问题描述】:
我有一个由时间序列数据组成的小标题。在每个时间步,我都有一个与测试标识 (FName) 相关的给定载荷 (Loadz) 和位移 (Dispz):
# A tibble: 15,926 x 5
# Groups: FName [92]
TIMESTAMP FName Dispz Loadz Failflag
<chr> <chr> <dbl> <dbl> <chr>
1 2020-09-19 14:56:46 D-H1 0 0 ""
2 2020-09-19 14:56:46.5 D-H1 0.019 3.61 ""
3 2020-09-19 14:56:47 D-H1 0.04 8.91 ""
4 2020-09-19 14:56:47.5 D-H1 0.06 14.5 ""
5 2020-09-19 14:56:48 D-H1 0.0790 20.1 ""
6 2020-09-19 14:56:48.5 D-H1 0.101 25.7 ""
7 2020-09-19 14:56:49 D-H1 0.12 31.2 ""
8 2020-09-19 14:56:49.5 D-H1 0.142 36.1 ""
9 2020-09-19 14:56:50 D-H1 0.162 40.9 ""
10 2020-09-19 14:56:50.5 D-H1 0.183 45.9 ""
我有下面的代码过滤掉低于某个阈值的所有负载和位移(对于大于 0.02mm 的位移和超过 10N 的负载),然后扫描(或归零)所有内容,以便所有测试从原点开始。
dat<-df%>%
group_by(FName)%>%
filter(Dispz>0.02)%>%
filter(Loadz>10)%>%
mutate_if(is.numeric,funs(.-first(.)))%>%
slice(1:which.max(Loadz))
但是,我有一些测试有一些错误,需要手动强制。这就是我遇到麻烦的地方。
我在需要将数据归零的位置有那些行为不端的测试的 FName 标识和相关的 TIMESTAMP 值,但是找到了一种方法来过滤掉查找数据帧,该查找数据帧也从此查找中查找值事实证明,tibble 具有挑战性。
# Identify FName ids that need to be manually modified
badlist<-c("WR-H2.2",
"WR-H2.3",
"WR-H2.4")
#Find associated timestamps with each respective FName label
timelist<-c("2020-10-04 12:31:06",
"2020-10-04 12:32:28",
"2020-10-04 12:33:46.5")
#Sample ID, and associated row to
maninput<-tibble(x=badlist,y=timelist)
我的 R 语言不是特别好,所以下面的可悲尝试伪代码试图表达我的意图。本质上,它需要查找 FName 变量的分组原因(这是我最大的问题,这是使用“quo”吗?),然后找到关联的 TIMESTAMP 值作为过滤器的变量。
Newdat<-dat%>%
group_by(FName)%>%
filter(TIMESTAMP>maninput[FName== "group_by(FName)",2]
我很困惑,但感觉答案很简单。
【问题讨论】:
-
如果您提供一些您尝试对数据进行的“测试”的详细信息会更好。