从行:R中删除非英语字符串

时间:2020-09-02 14:07:32

标签: r dplyr stringr

我有几个变量,其数据(行)包含英语字符串,后跟非英语翻译(印地语)。

例如木匠(印地语为木匠)

是否可以将行剥离为仅包含英文部分?印地语在应用功能时引起问题,因此我希望将其删除。

3 个答案:

答案 0 :(得分:1)

这是使用基数R的iconv()的另一种选择,它仅删除非拉丁脚本:

s <- 'Carpenter (बढ़ई)'
iconv(s, "latin1", "ASCII", sub="")
# [1] "Carpenter ()"

应用于数据框:

df <- data.frame(rbind('Carpenter (बढ़ई)',
    'Cat (बिल्ली)'))
sapply(df,iconv, from="latin1", to="ASCII",sub="")
# [1,] "Carpenter ()"                           
# [2,] "Cat ()"    

答案 1 :(得分:0)

我设法通过使用正则表达式(regex)和stringr包来去除文本的英语部分。下面是示例数据框和结果输出。

library(tidyverse)
library(stringr)

df <- tibble(
      complete_wrd = c(
             "carpenter (Hindi word for carpenter)",
             "cat (Hindi word for cat)",
             "dog (Hindi word for dog)"))


df %>%
   mutate(engl_wrd = stringr::str_extract(complete_wrd, "^.*?\\S*"))


# A tibble: 3 x 2
  complete_wrd                         engl_wrd 
  <chr>                                <chr>    
1 carpenter (Hindi word for carpenter) carpenter
2 cat (Hindi word for cat)             cat      
3 dog (Hindi word for dog)             dog    

答案 2 :(得分:0)

另一种尝试的方式

library(dplyr)
library(stringr)
df %>% 
mutate(hindi_text = str_remove(hindi_text, "\\(.*\\)"))
#             hindi_text
# 1 Construction Labourer
# 2                Other 

数据

df <- data.frame(hindi_text = c("Construction Labourer(सभी प्रकार के निर्माण मजदूर)", "Other(उपरोक्त के अतिरिक्त) "))
相关问题