合并在R之前和之后进行比较

问题描述:

我以某种方式没有得到followig的工作。合并在R之前和之后进行比较

我有一个data.frame有两列,一列包含字符串和一个索引列。我复制data.frame。名称是“清洁”和“控制”。我在清理时使用了一个简单的gsub函数,它使得具有特定模式NA的单元格或更改其内容。现在我想知道发生了什么变化。我认为将它们合并到一个新的data.frame中可能很容易,使用我的索引将其作为第1列进行清理,将控件作为第2列进行清理。 例如:

pat <- "AKGUN"" 
repl <- NA 

cleaning$V1 <- gsub(pat, repl, cleaning$V1, perl=TRUE) 
what.has.changed <- merge.data.frame (cleaning, control) 

的问题是,我只得到在新的数据帧2个variabbles,这并不能帮助我在all.Anyone一个想法是什么我做错了什么?理想情况下,我只会保留那些已经发生变化的行。 非常感谢, 施特菲

> dput(head(cleaning)) 
structure(list(V1 = c(NA, "ALEXANDER K, 2005, GLOBAL GOVERNANCE FI, P27", 
"BROMS B., 1953, SUOMI FINLAND, VVIII, P4", "ABDULLAH DS, 2003, NEW STRAITS TIM 0917, P10", 
"AGNEW J, 2010, POINT IS CHANGE IT, P214", "ABUNASR D, 2009, ASS PRESS  0329" 
), index2 = 1:6), .Names = c("V1", "index2"), row.names = c(NA, 
6L), class = "data.frame") 

> dput(head(control)) 
structure(list(V1 = c("AKGUN MENSUR, 2010, TESEV IST MARCH", 
"ALEXANDER K, 2005, GLOBAL GOVERNANCE FI, P27", "BROMS B., 1953, SUOMI FINLAND, VVIII, P4", 
"ABDULLAH DS, 2003, NEW STRAITS TIM 0917, P10", "AGNEW J, 2010, POINT IS CHANGE IT, P214", 
"ABUNASR D, 2009, ASS PRESS  0329"), index2 = 1:6), .Names = c("V1", 
"index2"), row.names = c(NA, 6L), class = "data.frame") 
+5

你可以分享'输入(头(清洁))'和'输入(头(控制))'? –

+0

对不起,我还不清楚。什么是'V2'?为什么'清洁'中没有索引栏?你也可以显示感兴趣的行(也就是说,'V1'以'“开头(”')? –

+3

如果你只想看看原来的'清理$ V1'和修改版本之间的区别,为什么不用你是不是只需要添加一列来清理呢?也就是说,不是修改'清理$ V1',而是做这样的事情:'清理$ V3

假设你正在使用的control数据帧上,我认为可能有助于使用dplyr如下:

library(dplyr) 

cleaning2 <- control %>% 
    mutate(V3 = gsub(pat, repl, V1, perl = TRUE)) 

现在,如果我们想仅对比的变化,我们可以进行一些修改:

cleaning2 <- control %>% 
    mutate(V1 = gsub(pat, repl, V1, perl = TRUE)) %>% 
    anti_join(control) 

如果您希望查看所有类似列,请使用intersect()而不是anti_join()