日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

str转list_数据运算030篇字符串处理str_dec的局限

發(fā)布時(shí)間:2025/3/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 str转list_数据运算030篇字符串处理str_dec的局限 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
當(dāng)str_dec遇上英文括號(hào)生活科學(xué)哥-R語言科學(xué) 2020-11-28?16:31最近過著狗一樣的日子,在折騰數(shù)據(jù),一個(gè)月沒有更新了。今天與大家分享自己在用str_dec時(shí)的一點(diǎn)小心得,作為一個(gè)不會(huì)高級(jí)正則表達(dá)式的小白,又要對常見的數(shù)據(jù)進(jìn)行處理,那么,stringr是一個(gè)不得不用的包,但是在用的時(shí)候,也碰到了一些局限性。

原始的數(shù)據(jù)

??為了演示這個(gè)過程,我這里生成了一個(gè)虛擬的數(shù)據(jù),結(jié)構(gòu)如下:

library(stringr)dat1c(dat2c(> dat1 x y1 1號(hào)發(fā)展有限公司 12 2號(hào)發(fā)展有限公司 23 3號(hào)科學(xué)有限公司 34 4號(hào)科學(xué)有限公司 45 5號(hào)牛逼哄哄有限公司 5> dat2 x y1 科學(xué)發(fā)展(中國)有限公司 12 科學(xué)發(fā)展(中國)有限公司 23 科學(xué)發(fā)展中國有限公司 34 天道發(fā)展有限公司 45 牛逼哄哄有限公司 5

注意一下原始數(shù)據(jù)中帶括號(hào)的區(qū)別,其中在dat2中,第一行的是英文括號(hào),第二行的是中文括號(hào)。相信因?yàn)檫@個(gè)括號(hào)的問題,大家編程時(shí)都不小心入過坑。

想實(shí)現(xiàn)的操作

? ? 用stringr包中的str_dec,一開始的初衷就是對于列中的公司名進(jìn)行搜索,以找到自己定義了關(guān)鍵字的行。要實(shí)現(xiàn)2個(gè)任務(wù)

  • 找出指定關(guān)鍵字,“科學(xué)”及“發(fā)展”兩個(gè)字的公司

  • 找出有關(guān)鍵字“科學(xué)發(fā)展(中國)”的公司 ,注意是英文的括號(hào);或者是找出有關(guān)鍵字“科學(xué)發(fā)展(中國)”的公司 ,注意是中文的括號(hào)

任務(wù)1

? ?這個(gè)任務(wù)很簡單,一個(gè)就是用或的符號(hào),在str_dec中指定即可:

str_detect(dat1$x,"發(fā)展|科學(xué)")%>%dat1[.,]

但是在日常的工作中,可能這兩個(gè)關(guān)鍵字,發(fā)展與科學(xué),是會(huì)變的,假如是變量,如下:

var1"1號(hào)"var2"牛逼"paste0(var1,"|",var2)%>%str_detect(dat1$x,.)%>%dat1[.,]

所以,也只要指定paste0連接即可。

任務(wù)2

? ?來看看,帶括號(hào)的操作,dat2中的數(shù)據(jù)。當(dāng)然了,有人說,我可以把數(shù)據(jù)源dat2中的特殊字符都處理掉,不行么?行,你說了算。不過,有時(shí)候,處理掉了這些特殊字符,后面就失去了它原來的意義。我就是這么執(zhí)拗,要帶括號(hào)操作,怎么辦?

> dat2 x y1 科學(xué)發(fā)展(中國)有限公司 12 科學(xué)發(fā)展(中國)有限公司 23 科學(xué)發(fā)展中國有限公司 34 天道發(fā)展有限公司 45 牛逼哄哄有限公司 5> str_detect(dat2$x,"科學(xué)發(fā)展(中國)|牛逼哄哄")%>%dat2[.,] x y3 科學(xué)發(fā)展中國有限公司 35 牛逼哄哄有限公司 5

?what a fuck? 這個(gè)不是我們要的1與5,而是出現(xiàn)了3與5,無視我的括號(hào)嘛 ?如果用的是中文的括號(hào),如下:

> str_detect(dat2$x,"科學(xué)發(fā)展(中國)|牛逼哄哄")%>%dat2[.,] x y2 科學(xué)發(fā)展(中國)有限公司 25 牛逼哄哄有限公司 5

如果中文的括號(hào),一點(diǎn)沒問題。果然是搞區(qū)別對待,英文的當(dāng)作了特殊字符,要下面加個(gè)\\轉(zhuǎn)一下:

> str_detect(dat2$x,"科學(xué)發(fā)展\\(中國\\)|牛逼哄哄")%>%dat2[.,] x y1 科學(xué)發(fā)展(中國)有限公司 15 牛逼哄哄有限公司 5

所以,括號(hào)要特別的注意。這個(gè)時(shí)候,就發(fā)現(xiàn)了str_dec的一個(gè)局限,來看看grep對應(yīng)的操作。假設(shè)我們只想找出有關(guān)鍵字“科學(xué)發(fā)展(中國)”的公司:

> grepl("科學(xué)發(fā)展(中國)",dat2$x,fixed=TRUE)%>%dat2[.,] x y1 科學(xué)發(fā)展(中國)有限公司 1> grepl("科學(xué)發(fā)展(中國)",dat2$x)%>%dat2[.,] x y3 科學(xué)發(fā)展中國有限公司 3>

可以看到,在grepl中有一個(gè)fixed參數(shù)的開關(guān),如果為TRUE,前面所有的字符串的特殊字符,就當(dāng)正常的操作,這樣就OK了。可是在str_dec中,沒有這個(gè)對應(yīng)的參數(shù)。

不確定字符串的情況

? ?其實(shí)重點(diǎn)是在這個(gè)任務(wù)如何處理,如果知道了明確的字符串,任務(wù)1與2都很簡單,那么,當(dāng)字符串是兩個(gè)變量,并且有特殊符號(hào)時(shí),該怎么辦呢?憑我的智商,只能用下面的曲線救國的方法:

var1"科學(xué)發(fā)展(中國)"var2"天道"patlist(var1),#把兩個(gè)要檢查的字符存入列表,方便?后面的mapplydatlist(dat2$x),length(pat))#復(fù)制對應(yīng)的列表個(gè)數(shù),方便mapplystrcheckfunction(dat,str){???grepl(str,dat,fixed?=?TRUE)??}#這是一個(gè)用了grepl的,并且是fixed=TRUE的檢查函數(shù)mapply(strcheck,dat,pat)%>%apply(.,1,any)%>%dat2[.,]#用mapply操作,返回的值用any來計(jì)算,只要對上了,都 為TRUE

當(dāng)上面的var1與var2變成任何值時(shí),哪怕有字符串,上面的也是可以對付 。

?今天的簡單分享就到這里,希望朋友們有用;上面只是舉例,事實(shí)的情況,數(shù)據(jù)是相當(dāng)大的。所以希望用簡單的例子,來應(yīng)對復(fù)雜的情況。

當(dāng)然了,相信有更簡單的實(shí)現(xiàn)方法,希望朋友們留言。

參考文獻(xiàn)?

1.??https://www.rdocumentation.org/packages/stringr/versions/1.4.0/topics/str_detect

往期回顧

01

基本概念

從零開始學(xué)R-001篇-程序安裝

從零開始學(xué)R-002篇-向量

從零開始學(xué)R-003篇-數(shù)據(jù)框

從零開始學(xué)R-004篇-列表

從零開始學(xué)R-005篇-矩陣

數(shù)據(jù)結(jié)構(gòu)-006篇-數(shù)組實(shí)例

數(shù)據(jù)結(jié)構(gòu)-007篇-因子

?數(shù)據(jù)運(yùn)算-008篇-數(shù)學(xué)與邏輯運(yùn)算

數(shù)據(jù)運(yùn)算-009篇-矩陣運(yùn)算簡單介紹

數(shù)據(jù)運(yùn)算-010篇-內(nèi)置的一般數(shù)學(xué)計(jì)算函數(shù)

數(shù)據(jù)運(yùn)算-011篇-內(nèi)置的統(tǒng)計(jì)概率函數(shù)

數(shù)據(jù)運(yùn)算-012篇-集合的操作

邏輯運(yùn)算-013篇-條件語句

循環(huán)語句-014篇-for與while

循環(huán)語句-015篇-apply家族

定位函數(shù)-016篇-which函數(shù)打天下

字符處理-017篇-paste函數(shù)

字符處理-018篇-grep,substr,sub等函數(shù)

數(shù)據(jù)運(yùn)算-019篇-統(tǒng)計(jì)函數(shù)初體驗(yàn)median與mad

數(shù)據(jù)運(yùn)算-020篇-統(tǒng)計(jì)函數(shù)初體驗(yàn)之分位數(shù)quantile

數(shù)據(jù)運(yùn)算-021篇-統(tǒng)計(jì)函數(shù)初體驗(yàn)之差分diff函數(shù)

數(shù)據(jù)運(yùn)算-022篇-統(tǒng)計(jì)函數(shù)初體驗(yàn)之中心化函數(shù)scale

數(shù)據(jù)運(yùn)算-023篇-描述性統(tǒng)計(jì)分析及缺失值分析

數(shù)據(jù)運(yùn)算-024篇-相關(guān)系數(shù)分析

數(shù)據(jù)運(yùn)算-025篇-dplyr之slice

數(shù)據(jù)運(yùn)算-026篇-數(shù)據(jù)的行拆分

數(shù)據(jù)運(yùn)算-027篇-數(shù)據(jù)的行合并

數(shù)據(jù)運(yùn)算-028篇-rlang的列引用方法

數(shù)據(jù)運(yùn)算-029篇-對多列數(shù)據(jù)框進(jìn)行格式轉(zhuǎn)換

02

基礎(chǔ)作圖

R的作圖-001篇-barplot柱狀圖

R的作圖-002篇-pie?作餅圖

R的作圖-003篇-hist?直方圖

R的作圖-004篇-boxplot箱線圖

R的作圖-005篇-核密度圖與比較

R的作圖-006篇-plot函數(shù)

R的作圖-007篇-散點(diǎn)圖與線性擬合

R的作圖-008篇-散點(diǎn)圖矩陣

R的作圖-009篇-高密度散點(diǎn)圖

R的作圖-010篇-三維散點(diǎn)圖

R的作圖-011篇-氣泡圖

R的作圖-012篇-馬賽克圖

R的作圖-013篇-QQ圖及原理

R的作圖-014篇-lm擬合結(jié)果圖解釋

R的作圖-015篇-ggplot2之初體驗(yàn)

R的作圖-016篇-ggplot2之geom_point

R的作圖-017篇-ggplot2之geom_jitter與rug

R的作圖-018篇-ggplot2之geom_line與geom_path

R的作圖-019篇-ggplot2之geom_area,geom_polygon geom_ribbon

R的作圖-020篇-ggplot2之geom_bar,geom_col與geom_histogram????

R的作圖-021篇-ggplot2之geom_density

R的作圖-022篇-ggplot2之geom_density2d

R的作圖-023篇-ggplot2之geom_boxplot

R的作圖-024篇-ggplot2之geom_bin2d

R的作圖-025篇-ggplot2之geom_contour()

R的作圖-026篇-ggplot2之geom_crossbar 與geom_count()

R的作圖-027篇-ggplot2之geom_errorbar 與geom_linerange等簡單作圖

R的作圖-028篇-ggplot2之geom_vline/hline/abline/smooth等

R的作圖-029篇-ggplot2之geom_tile,geom_rect與geom_raster

R的作圖-030篇-ggplot2之geom_text與geom_label

作圖進(jìn)階-031篇-ggplot2之geom_violin

作圖進(jìn)階-032篇-ggplot2之分面facet_grid與facet_wrap

作圖進(jìn)階-033篇-ggplot2之legend

作圖進(jìn)階-034篇-ggplot2之作圖區(qū)的設(shè)定

作圖進(jìn)階-035篇-ggalluvial之桑基圖

作圖進(jìn)階-036篇-ggridges之峰巒圖

作圖進(jìn)階-037篇-坐標(biāo)軸標(biāo)簽重疊的優(yōu)化

作圖進(jìn)階-038篇-數(shù)據(jù)擬合作圖分析

作圖進(jìn)階-039篇-plotly包之a(chǎn)dd_XXX

作圖進(jìn)階-040篇-plotly的type與mode

作圖進(jìn)階-041篇-plotly的顏色設(shè)置

作圖進(jìn)階-042篇-plotly中往圖中增加標(biāo)簽

作圖進(jìn)階-043篇-plotly通過add_fun靈活疊加圖

作圖進(jìn)階-044篇-plotly的圖例legend設(shè)置

作圖進(jìn)階-045篇-plotly的坐標(biāo)軸Ticks設(shè)置

作圖進(jìn)階-046篇-plotly設(shè)定默認(rèn)的trace顏色

作圖進(jìn)階-047篇-plotly中畫誤差棒作圖進(jìn)階-048篇-plotly中的箱線圖

作圖進(jìn)階-049篇-plotly中的動(dòng)畫效果

作圖進(jìn)階-050篇-plotly中二維密度與等高線

作圖進(jìn)階-051篇-add_heatmap的使用

作圖進(jìn)階-052篇-add_ribbons與polygons的使用

作圖進(jìn)階-053篇-add_segments,add_paths與add_table

作圖進(jìn)階-054篇-基于矩陣畫熱圖

作圖進(jìn)階-055篇-mesh3d畫個(gè)雨傘玩玩

作圖進(jìn)階-056篇-經(jīng)驗(yàn)累積分布函數(shù)的實(shí)現(xiàn)

作圖進(jìn)階-057篇-畫個(gè)瓶子玩玩

?作圖進(jìn)階-058篇-plotly中的曲線旋轉(zhuǎn)

作圖進(jìn)階-059篇-曲線旋轉(zhuǎn)后簡單構(gòu)造三維圖形作圖進(jìn)階-060篇-曲線的拉伸作圖進(jìn)階-061篇-ggplot2中的legend排列作圖進(jìn)階-062篇-ggplot2中采用雙標(biāo)度作圖進(jìn)階-063篇-ggplot2中的標(biāo)度作圖進(jìn)階-064篇-plotly里的gauge chart作圖進(jìn)階-065篇-plotly里的瀑布圖作圖進(jìn)階-066篇-plotly里的漏斗圖作圖進(jìn)階-067篇-ggplot2中標(biāo)注顯著性作圖進(jìn)階-068篇-ggplot2中的嵌套子圖作圖進(jìn)階-069篇-r中的數(shù)據(jù)表格處理作圖進(jìn)階-070篇-再談R中的顏色作圖進(jìn)階-071篇-再談R中的因子作圖進(jìn)階-072篇-展現(xiàn)交集的韋恩圖作圖進(jìn)階-073篇-用R快速生成word文檔批

03

作圖技巧

作圖技巧-001篇-facet_zoom放大局部圖

作圖技巧-002篇-ggplot2?中的字體設(shè)置

作圖技巧-003篇-ggplot2?新版本?3.3.0的一些新功能

作圖技巧-004篇-QQ圖之DIY

作圖技巧-005篇-plotly做3維曲面圖

作圖技巧-006篇-數(shù)據(jù)標(biāo)記初體驗(yàn)

作圖技巧-007篇-數(shù)據(jù)標(biāo)記之geom_mark_hull進(jìn)階

作圖技巧-008篇-ggforce中甜甜圈餅圖的作法及其它的功能

作圖技巧-009篇-ggplot作圖時(shí)的因子排序

作圖技巧-010篇-plot_ly中的mesh3d

作圖技巧-011篇-ggplot_build中的數(shù)據(jù)提取實(shí)現(xiàn)histogram與density同步疊加

作圖技巧-012篇-ggplot中的stat_sum等系列

作圖技巧-013篇-ggplot分面圖的標(biāo)簽設(shè)置

作圖技巧-014篇-不同的樣條曲線bspline

作圖技巧-015篇-大家一起來拼圖

作圖技巧-016篇-拼圖系列之2-cowplot

作圖技巧-017篇-拼圖工具之3-patchwork

作圖技巧-018篇-第二坐標(biāo)軸在ggplot2中的實(shí)現(xiàn)

作圖技巧-019篇-draw_key_XXX系列

作圖技巧-020篇-更改ggplot2作圖的默認(rèn)設(shè)置

作圖技巧-021篇-增加基于表達(dá)式的坐標(biāo)軸標(biāo)題

04

R的技巧

R的技巧-001篇-快速從列表中提取元素組成數(shù)據(jù)框

R的技巧-002篇-快速對數(shù)據(jù)框中滿足條件的列進(jìn)行替換

R的技巧-003篇-數(shù)字的不同取整與進(jìn)位

R的技巧-004篇-文件名提取分類成表

R的技巧-005篇-直方圖與分布圖的疊加

R的技巧-006篇-ggplot2中的cut類函數(shù)

R的技巧-007篇-assign與get:動(dòng)態(tài)生成變量與獲取變量

R的技巧-008篇-pretty函數(shù)實(shí)現(xiàn)完美分割點(diǎn)

R的技巧-009篇-數(shù)據(jù)填充? ???????????????

R的技巧-010篇-dplyr之slice,mutate,summarize ?與do

R的技巧-011篇-dnorm,pnorm與qnorm傻傻分不清

R的技巧-012篇-縫縫補(bǔ)補(bǔ)改創(chuàng)建好的ggplot2圖

R的技巧-013篇-approx函數(shù)插值

R的技巧-014篇-openxls包處理excel數(shù)據(jù)

?

歡迎關(guān)注與轉(zhuǎn)發(fā),如有不懂,可以共同探討,在后臺(tái)留言或者是掃碼下方。

你點(diǎn)的每一個(gè)在看,我都認(rèn)真當(dāng)成了喜歡

總結(jié)

以上是生活随笔為你收集整理的str转list_数据运算030篇字符串处理str_dec的局限的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。