如何解决R – 如何为具有接近值的匹配数据提供通用 ID,并为配对测试安排数据帧例如来自 Hmisc::find.matches()
大家好!我希望你今天过得愉快。
目标和背景
我的两个数据帧是用不同的方法构建的,但在相同的信号上测量相同的参数。 我想将第一个数据帧中的每个信号与第二个数据帧中的相同信号进行匹配,比较参数值,并相互评估方法。
我非常感谢任何帮助,因为我在 R 编码和数据帧管理方面达到了初学者的极限。
基本上,我想在两个单独的数据框中找到匹配项,并认为这些匹配项是指同一个实体(例如,在创建 ID 变量时),以便对配对数据进行统计分析。
我本可以在电子表格上手动进行匹配,但由于有数百个条目和更多比较,我希望自动匹配和创建数据框。
给您一个想法,我的数据框如下所示:
DF1
录音 | 选择 | 开始(毫秒) | 最大频率 (kHz) |
---|---|---|---|
001 | 1 | 11.3 | 42.4 |
001 | 2 | 122.9 | 46.2 |
001 | 3 | 232.3 | 47.5 |
002 | 1 | 22.9 | 30.9 |
002 | 2 | 512.4 | 31.3 |
我的第二个数据框看起来像这样:
DF2
录音 | 选择 | 开始(毫秒) | 最大频率 (kHz) |
---|---|---|---|
001 | 1 | 10.9 | 41.8 |
001 | 2 | 122.1 | 44.5 |
001 | 3 | 231.3 | 44.4 |
002 | 1 | 513.0 | 30.2 |
我的想法
我考虑过识别每个信号,但是
-
使用“录制 + 选择”(001_1、001_2...)的 ID 将不起作用,因为两种方法都未检测到某些信号。
-
所以我想使用起始位置来识别信号,但四舍五入到最接近的值或上/下值不会匹配所有信号。
Hmisc::find.matches() 函数
我尝试了 Hmisc 包中的 find.matches() 函数,根据您输入的容差阈值,该函数给出了列的匹配项。
find <- find.matches(DF_method1$start_one,DF_method2$start_two,tol=(2))
(我随意选择了2ms的容差,因为它被认为是相同的信号)
输出如下:
Matches:
Match #1 Match #2 Match #3
[1,] 1 7 0
[2,] 2 42 0
[3,] 3 0 0
[4,] 4 0 0
[5,] 0 0 0
[6,] 5 0 0
[7,] 22 6 0
我觉得它走到了一起,但我坚持这两个问题:
-
如何在每个录音中找到最接近的匹配,而不是比较所有录音中的所有信号? (此处的示例,所有第 1 个匹配项都被正确识别,除了 n°7,与来自不同录音的 n°22 匹配)我如何在每个录音中运行该函数 ?
我觉得这个功能很接近我的目标,但如果你有任何其他建议,我会全神贯注。
非常感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。