在R中合并以便在

时间:2017-08-10 13:38:14

标签: r merge compare

我不知道怎么做才能使用。

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

pat <- "AKGUN""
repl <- NA

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

问题是,我在新数据框中只得到2个变量,这对我没有任何帮助。任何人都知道我做错了什么?理想情况下,我只保留那些看到变化的行。 非常感谢, 斯蒂菲

> 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")

1 个答案:

答案 0 :(得分:0)

假设您正在使用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()