首页 > 解决方案 > 具有分隔变量的两列之间的差异;在 R 中

问题描述

我是 R 的初学者,在尝试做一些练习时,我陷入了其中一个问题。我的data.frame如下:

LanguageWorkedNow LanguageNextYear Java; PHP Java; C++; SQL C;C++;JavaScript; JavaScript; C; SQL

而且我需要知道其中的变量LanguageNextYear和不在的变量LanguageWorkedNow,以设置一个包含不同变量的列表。

抱歉,如果问题重复,我在这里很新,并试图找到它,但没有成功。

标签: r

解决方案


碱基R

想法:mapply setdiffstrsplitted NextYear 和 WorkedNow 上,然后使用collapse=";"

df$New <- with(df, {
  a <- mapply(setdiff, strsplit(NextYear, ";"), strsplit(WorkedNow, ";"), SIMPLIFY = FALSE)
  sapply(a, paste, collapse=";")
})
# SIMPLIFY = FALSE is needed in a general case, it doesn't
# affect the output in the example case
# Or if you use Map instead of mapply, that is the default, so
# it could also be...

df$New <- with(df, 
  sapply(Map(setdiff, strsplit(NextYear, ";"), strsplit(WorkedNow, ";")), 
     paste, collapse=";"))

数据

df <- read.table(text = "WorkedNow      NextYear
                Java;PHP              Java;C++;SQL  
                C;C++;JavaScript      JavaScript;C;SQL
                ", header=TRUE, stringsAsFactors=FALSE)

推荐阅读