如何使用查找表在数据框中创建新行?

时间:2015-12-10 14:17:02

标签: r grep dataframe

我有两个数据框。一个包含我试图清理/修改的数据(df_x),一个是查找表(df_y)。有一个列df_x $ TEXT包含一个字符串,如“Some text - with more”,查找表df_y如下所示:

SORT            ABB
--------------  ----
Some Text       ST

我想查看df_y $ SORT中的值是否在df_x的每行中的df_x $ TEXT中。如果匹配,则在该匹配行中获取df_y $ ABB值,并将其添加到df_x中的新列,如df_x $ TEXT_ABB。

对于上面的信息,算法会看到“Some Text”在“Some text - with more”(忽略大小写)中,因此它会将值“ST”添加到列df_x $ TEXT_ABB。

我知道我可以使用匹配或者sapply和grep的组合来搜索它是否存在但是我无法知道如何执行此操作并获取缩写我希望将其映射回原始数据框中的新列

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

df_x <- data.frame(TEXT=c("Some Text 001", "other text", "Some Text 002"))
df_y <- read.table(header=TRUE, text=
'SORT            ABB
"Some Text"       ST
"Other Text"      OT')

L <- sapply(df_y$SORT, grep, x=df_x$TEXT, ignore.case=TRUE)
df_x$abb <- NA
for (l in 1:length(L)) if (length(L[[l]])!=0) df_x$abb[L[[l]]] <- as.character(df_y$ABB[l])