簡體   English   中英

從行中刪除非英文字符串:R

[英]Remove non-english string from Rows: R

我有幾個變量,其數據(行)包含英文字符串,后跟非英文翻譯(印地語)。

例如 Carpenter(木匠的印地語詞)

有沒有辦法剝離行以僅包含英文部分? 印地語導致應用函數出現問題,因此我希望將它們刪除。

這是使用 base 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 ()"    

我設法通過使用正則表達式 (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    

另一種方法你可以試試

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(उपरोक्त के अतिरिक्त) "))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM