【问题标题】:How to extract same texts/values from 2 columns in R data frame?如何从 R 数据框中的 2 列中提取相同的文本/值?
【发布时间】:2018-11-13 00:58:28
【问题描述】:

我想提取 col1 和 col2 中相同的文本/值,并创建我的数据框中提供的“desired_col”。我尝试了几件事,但没有奏效..

mydata_1<-data.frame(col1=c("SL1234","SL786876"),col2=c("SL1334","SL78076"),desired_col=c(c("SL1","SL78")))

【问题讨论】:

标签: r string multiple-columns


【解决方案1】:

使用mapply 的选项:

mydata_1$matched <- mapply(function(x,y){
  # First take same length fron both columns
  x <- substring(x,1, min(nchar(x),nchar(y)))
  y <- substring(y,1, min(nchar(x),nchar(y)))

  matching_len <- which(strsplit(x, split = "")[[1]] != strsplit(y, split = "")[[1]])[1]-1
  substring(x, 1, matching_len)
}, mydata_1$col1, mydata_1$col2)


mydata_1
#       col1    col2 desired_col matched
# 1   SL1234  SL1334         SL1     SL1
# 2 SL786876 SL78076        SL78    SL78

数据:

mydata_1<-data.frame(col1=c("SL1234","SL786876"),
                     col2=c("SL1334","SL78076"),
                     desired_col=c(c("SL1","SL78")), 
                     stringsAsFactors = FALSE)

【讨论】:

  • 当我运行此代码时,我收到以下错误“strsplit(x, split = "") 中的错误:非字符参数 4. strsplit(x, split = "") 3. 其中(strsplit(x, split = "")[[1]] != strsplit(y, split = "")[[1]]) 2. (function (x, y) { matching_len
  • @YogeshKumar 您的 data.frame 包含 factor 字符串。您可以修改数据框的定义以包含stringsAsFactors = FALSE(如我在示例数据中所示)。或者您必须在函数本身内转换 xy
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多