R:在定义列中将数据帧与分号分隔的值合并/匹配
如果这个问题过于简单,请道歉,但我仍然是R的一名临时初学者。我上过一些入门课程。我知道基本情况。我可以很好地阅读它,但我仍然发现自己迷路了 我的问题是: 我有两个数据帧,看起来像这样R:在定义列中将数据帧与分号分隔的值合并/匹配,r,dataframe,merge,match,R,Dataframe,Merge,Match,如果这个问题过于简单,请道歉,但我仍然是R的一名临时初学者。我上过一些入门课程。我知道基本情况。我可以很好地阅读它,但我仍然发现自己迷路了 我的问题是: 我有两个数据帧,看起来像这样 Table1 <- data.frame("Name"=c("aaa","bbb-2; bbb", "ddd", "eee", "fff-2; fff"), "Values1"= c(2, 0.5, 0.1, 3, 4)) Table2 <- data.frame ("Name"=c("aaa", "
Table1 <- data.frame("Name"=c("aaa","bbb-2; bbb", "ddd", "eee", "fff-2; fff"),
"Values1"= c(2, 0.5, 0.1, 3, 4))
Table2 <- data.frame ("Name"=c("aaa", "ccc", "bbb; ddd", "fff"),
"Values2"= c(5, 2, 1, NA), "Values3"= c(4, NA, 1, NA))
Table1我们可以做一个sub
来删除这些子字符串
Table1$Name <- sub("-\\d+", "", Table1$Name)
好的,我想现在可以了,但是如果在将来的数据中,我将得到表1中的名称,当它们有“-2”加法时,它们不仅用分号分隔,而且是不同的名称呢?(即“bbb;ccc”而不是“bbb-2;bbb”)@fat2mad它只会触及那些你有bbc-2
的情况。@fat2mad如果是这样的话,你将如何决定Table2
的哪个值应该分配给Table1
?@akrun你的代码并没有完全满足他的要求。如果分号分隔的值中有一个匹配,他想将表2中的值添加到表1中。我们可以用一个临时的strsplit来做吗?@Leo P.:(1)这是个好问题。我不知道它是否真的适用于我的特殊情况,但据我所知,在类似的数据集中,条目是按优先级排序的。第一个条目是前导条目,(2)我想可以将条目分成两行进行匹配,只要结果中的数据不重复。
merge(Table1, Table2, by = "Name", all.x = TRUE)