【发布时间】:2011-05-30 02:47:49
【问题描述】:
R 领域的专家。
我有两个数据框。
数据框一:
df1 <- c("xx", "bb", "zz")
数据框二:
df2 <- data.frame(A=c("xx", "be", "zz", "jj"), B=c("xyx, uu, zz", "uu, zbbz, zbz, ccc", "cc, zzx", "ddd"), C=c("bbbb", "yyy", "xxq", "ooo"), D=c("ooo", "yyy", "ccc", "zoz"))
因此,df2如下:
A B C D
1 xx xyx, uu, zz bbbb ooo
2 be uu, zbbz, zbz, ccc yyy yyy
3 zz cc, zzx xxq ccc
4 jj ddd ooo zoz
我想将 x 与 y 匹配以获取新的数据帧。查看 Stackoverflow 的答案,我学会了如何进行精确匹配。不过,在目前的情况下,我想做完全匹配和部分匹配。在我看来,“grep”可能会有所帮助,但我还不能让它适用于我的情况,请帮忙。
在 df1 中,我必须使用三个术语来匹配“xx”、“bb”和“zz”。而不是在 df2.x 中搜索精确的 xx、bb、zz。我想检查这些术语是否可以在 df2 的 A 和 B 列中找到,其中可能包含完全匹配和部分匹配。
例如,我会考虑
xx 匹配第 1 行(与 A1 完全匹配)
bb 仅匹配第 2 行(部分 与 B2 匹配)
zz 匹配第 1 行 和第 3 行(与 B1 和 与 A3 完全匹配,部分匹配 也有 B3),
作为 zz 匹配两个 两个项目,我想排序一个 在决赛中首先获得完全匹配 数据框,即第 3 行首先显示, 接下来显示第 1 行。
虽然第 4 行 df2 与中的任何内容都不匹配 桌子,所以,它不会出现 在最终的数据框中。
最后,我想通过将相应的df2添加到df1来获得一个数据框,如下所示:
V1 A B C D
1 xx xx xyx, uu, zz bbbb ooo
2 bb be uu, zbbz, zbz, ccc yyy yyy
3 zz zz cc, zzx xxq ccc
4 zz xx xyx, uu, zz bbbb ooo
在这种情况下可以使用 grep 或 sort 吗?请指导更聪明的方法。谢谢。
【问题讨论】:
-
对于您问题的第一部分,数据框结果会是什么?坐标还是匹配的字符串?
标签: r