【发布时间】:2020-10-19 19:21:18
【问题描述】:
我有一个带有各自值的时间戳数据集(这些不是真实的,只是一个示例):
Name time NOx ozone PM25 temp rain wind methane benzene xylene
1 80 40 62 3 32 79 36 53 8 91
2 13 72 40 73 1 77 36 85 66 25
3 87 83 93 2 51 28 96 28 66 37
4 6 53 3 96 42 57 75 77 77 50
5 38 61 85 36 2 4 43 17 20 59
6 54 15 75 72 81 100 72 62 86 40
7 36 5 70 44 99 1 62 49 48 66
8 73 97 7 87 7 4 59 97 49 36
9 30 89 58 28 91 72 94 85 68 25
10 12 51 78 17 82 67 52 13 67 60
我有一个单独的表格,其中包含我使用“汇总”执行的一些统计信息,包括每个参数的异常值阈值(除“名称”和“时间”之外的所有列):
NOx ozone PM25 temp rain wind methane benzene xylene
53 73 67 26 59 52 45 70 75
我想创建一个新表,其中显示名称、时间、参数和值,其中任何特定值都大于其异常值阈值。我通过使用 pivot_longer 将这两个数据框都设为“更长”格式来尝试此操作,现在我的主数据框如下所示:
Name time parameter value
1 80 NOx 40
2 80 ozone 62
3 80 PM25 3
4 80 temp 32
5 80 rain 79
6 80 wind 36
7 80 methane 53
我的异常数据框如下所示:
parameter value
NOx 53
ozone 73
PM25 67
temp 26
rain 59
wind 52
methane 45
benzene 70
xylene 75
我希望我的新异常值表看起来像上面的“更长”数据框,每个参数和值都有各自的“名称”和“时间”。我尝试使用“过滤器”进行此操作:
new_a <- A_long %>%
group_by(parameter) %>%
filter(A_long$value > B_long$value)
Error: Result must have length 50, not 450
我在尝试此操作时确实收到了一条错误消息,但我也不认为我尝试的此代码会给我想要的表格。有什么建议吗?
【问题讨论】:
-
您遇到的具体错误是什么,您能否展示您编写的产生错误的过滤器代码?
-
当然,我会将其添加到原始问题中。我非常希望我的异常值数据框看起来像具有 4 列(名称、时间、参数、值)的原始数据框,但只有每个参数被视为异常值的值。