【发布时间】:2021-07-01 16:04:30
【问题描述】:
我有一个数据框列表(df1、df2、df3),我想将列与另一个数据框(df)进行匹配,并且仅在匹配时替换字符串。匹配应该基于运行函数时指定的字符串,指定为部分匹配,换句话说,这里它仅适用于包含字符串“TEXT”的字段,并且应该适用于 TEXT123 和 TEXTabc 等情况。我自己也没走多远……
df1 <- data.frame(name = c("TEXT333","b","c"), column_A = 1:3, stringsAsFactors=FALSE)
df2 <- data.frame(name = c("b","TEXT345","d"), column_A = 4:6, stringsAsFactors=FALSE)
df3 <- data.frame(name = c("c","TEXT123","a"), column_A = 7:9, stringsAsFactors=FALSE)
df <- data.frame(name = c("TEXT333","TEXT123","a", "TEXT345", "k", "l", "b","c", "f"), column_B = 11:19, stringsAsFactors=FALSE)
list<-c(df1, df2, df3)
df1 示例
partial_match <- function(column_A$df1, column_B, TEXT, df) {
df1_new <-df1
df1_new[, column_B] <- ifelse(grepl("TEXT.*", df1[, column_A]),
df[, column_B] - nchar(TEXT),
df[, column_B])
df1_new
}
df1 的结果:
name column_A column_B
TEXT333 1 11
b 2 b
c 3 c
【问题讨论】:
-
一些样本数据和所需的输出会有所帮助
-
上传了一个样本
标签: r dataframe match substitution partial