Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 替换字符串的一部分(文本挖掘)_R_Text Mining - Fatal编程技术网

R 替换字符串的一部分(文本挖掘)

R 替换字符串的一部分(文本挖掘),r,text-mining,R,Text Mining,我想将字符串中的“replace”部分从df$x替换为df$y列的第一个单词。我有这样一个df: x y ABC-Replace-YUI M46 Hello CBD-Replace-TYU MD5 Hello DBE-Replace-RTY M6 Hello EBF-Replace-ERT M79 Hello FBG-Replace-WER MMM8 Hello 我想得到以下数据: x y ABC-M46-YUI

我想将字符串中的“replace”部分从df$x替换为df$y列的第一个单词。我有这样一个df:

x                 y
ABC-Replace-YUI   M46 Hello
CBD-Replace-TYU   MD5 Hello
DBE-Replace-RTY   M6 Hello
EBF-Replace-ERT   M79 Hello
FBG-Replace-WER   MMM8 Hello
我想得到以下数据:

x               y
ABC-M46-YUI     M46 Hello
CBD-MD5-TYU     MD5 Hello
DBE-M6-RTY      M6 Hello
EBF-M79-ERT     M79 Hello
FBG-MMM8-WER    MMM8 Hello

不幸的是,我在文本挖掘方面没有经验,我需要最有效的方法来实现这一点,因为我有一个巨大的数据集,每一行都有类似的替换。谢谢。

我们可以使用
str\u replace
将“replace”替换为“y”列中每个字符串的第一个单词(用
word
提取)

库(stringr)

df1$x我们可以使用
str_replace
将'replace'替换为'y'列中每个字符串的第一个单词(用
word
提取)

库(stringr)

df1$x您可以使用
stri\u extract\u first\u words
stringi
包中获取第一个单词,然后使用
mappy
以矢量化方式应用
sub
函数

library(stringi)
df1$x <- mapply(sub, "Replace", stri_extract_first_words(df1$y), df1$x, 
                                                                USE.NAMES = FALSE)

df1$x
#[1] "ABC-M46-YUI"  "CBD-MD5-TYU"  "DBE-M6-RTY"   "EBF-M79-ERT"  "FBG-MMM8-WER"
库(stringi)

df1$x您可以使用
stri\u extract\u first\u words
stringi
包中获取第一个单词,然后使用
mappy
以矢量化方式应用
sub
函数

library(stringi)
df1$x <- mapply(sub, "Replace", stri_extract_first_words(df1$y), df1$x, 
                                                                USE.NAMES = FALSE)

df1$x
#[1] "ABC-M46-YUI"  "CBD-MD5-TYU"  "DBE-M6-RTY"   "EBF-M79-ERT"  "FBG-MMM8-WER"
库(stringi)

df1$x我猜-Replace-指的是位置,而不是免责词,因此替换Replace本身是不正确的,但要识别此位置中的-content-,并替换它


我猜-Replace-指的是位置,而不是免责词,因此替换Replace本身是不正确的,但要识别此位置中的-content-并替换它


我猜-Replace-指的是位置而不是免责声明
-如果这是真的,OP不会接受akrun的回答。@Ronak Shah哦,那我错了。我是一个新用户,不熟悉post系统,以后会改进。谢谢。
我猜-Replace-指的是位置而不是免责声明
-如果这是真的,OP不会接受akrun的回答。@Ronak Shah哦,那我错了。我是一个新用户,不熟悉post系统,以后会改进。谢谢
library(stringi)
df1$x <- mapply(sub, "Replace", stri_extract_first_words(df1$y), df1$x, 
                                                                USE.NAMES = FALSE)

df1$x
#[1] "ABC-M46-YUI"  "CBD-MD5-TYU"  "DBE-M6-RTY"   "EBF-M79-ERT"  "FBG-MMM8-WER"
 df1 <- data.frame(x = c("ABC-Replace-YUI", 
         "CBD-anything-TYU", "DBE-test-RTY", 
         "EBF-bad-ERT", "FBG-good-WER"), 
          y = c("M46 Hello", "MD5 Hello", 
                "M6 Hello", "M79 Hello", 
                "MMM8 Hello"))
                     x          y
    1  ABC-Replace-YUI  M46 Hello
    2 CBD-anything-TYU  MD5 Hello
    3     DBE-test-RTY   M6 Hello
    4      EBF-bad-ERT  M79 Hello
    5     FBG-good-WER MMM8 Hello
library(stringr)
df1$x2 <- mapply(gsub,
                 "(?<=\\-).*?(?=\\-)", 
                 word(df1$y,1), df1$x, perl = T)

df1
                 x          y           x2
1  ABC-Replace-YUI  M46 Hello  ABC-M46-YUI
2 CBD-anything-TYU  MD5 Hello  CBD-MD5-TYU
3     DBE-test-RTY   M6 Hello   DBE-M6-RTY
4      EBF-bad-ERT  M79 Hello  EBF-M79-ERT
5     FBG-good-WER MMM8 Hello FBG-MMM8-WER