我对 R 比较陌生,所以我在向量空间中的思考不如经验丰富的用户那么清楚。我有一个格式如下的数据框:
metric timestamp value tag1 tag2 tag3 tag4 tag5 tag6 tag7 tag8 tag9 tag10
1 dummy.random.unif 1367848802 0.9936670064926147 host=localhost blah=foo NA NA NA NA NA NA NA NA
2 dummy.random.unif 1367848822 0.19621700048446655 host=localhost blah=bar NA NA NA NA NA NA NA NA
3 dummy.linear 1367848842 97.6 shmoo=whatever NA NA NA NA NA NA NA NA NA
4 dummy.random.unif 1367848862 0.3171229958534241 host=localhost blah=foo NA NA NA NA NA NA NA NA
5 dummy.linear 1367848882 97.7 shmoo=whatever NA NA NA NA NA NA NA NA NA
6 dummy.random.unif 1367848902 0.2197140008211136 host=localhost blah=foo NA NA NA NA NA NA NA NA
如您所见,这些列tag1:tag10
包含键值对。但并不总是相同的键,也不总是相同数量的键。我想把这个数据框转换成更像这样的东西,这样消费起来更方便:
metric timestamp value tag.host tag.blah tag.shmoo
1 dummy.random.unif 1367848802 0.9936670064926147 localhost foo NA
2 dummy.random.unif 1367848822 0.19621700048446655 localhost bar NA
3 dummy.linear 1367848842 97.6 NA NA whatever
4 dummy.random.unif 1367848862 0.3171229958534241 localhost foo NA
5 dummy.linear 1367848882 97.7 NA NA whatever
6 dummy.random.unif 1367848902 0.2197140008211136 localhost foo whatever
现在我知道我可以在程序上做到这一点,但它会很笨重,而且我听说使用 R 的正确方法是考虑对整个向量的操作(而不是循环它们)。我花了几个小时试图找出 , , 等的正确排列,do.call
但我没有得到任何结果。daply
strsplit
什么是解决此问题的干净的 R 式方法?