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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

原始的數據

??為了演示這個過程,我這里生成了一個虛擬的數據,結構如下:

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

注意一下原始數據中帶括號的區別,其中在dat2中,第一行的是英文括號,第二行的是中文括號。相信因為這個括號的問題,大家編程時都不小心入過坑。

想實現的操作

? ? 用stringr包中的str_dec,一開始的初衷就是對于列中的公司名進行搜索,以找到自己定義了關鍵字的行。要實現2個任務

  • 找出指定關鍵字,“科學”及“發展”兩個字的公司

  • 找出有關鍵字“科學發展(中國)”的公司 ,注意是英文的括號;或者是找出有關鍵字“科學發展(中國)”的公司 ,注意是中文的括號

任務1

? ?這個任務很簡單,一個就是用或的符號,在str_dec中指定即可:

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

但是在日常的工作中,可能這兩個關鍵字,發展與科學,是會變的,假如是變量,如下:

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

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

任務2

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

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

?what a fuck? 這個不是我們要的1與5,而是出現了3與5,無視我的括號嘛 ?如果用的是中文的括號,如下:

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

如果中文的括號,一點沒問題。果然是搞區別對待,英文的當作了特殊字符,要下面加個\\轉一下:

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

所以,括號要特別的注意。這個時候,就發現了str_dec的一個局限,來看看grep對應的操作。假設我們只想找出有關鍵字“科學發展(中國)”的公司:

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

可以看到,在grepl中有一個fixed參數的開關,如果為TRUE,前面所有的字符串的特殊字符,就當正常的操作,這樣就OK了。可是在str_dec中,沒有這個對應的參數。

不確定字符串的情況

? ?其實重點是在這個任務如何處理,如果知道了明確的字符串,任務1與2都很簡單,那么,當字符串是兩個變量,并且有特殊符號時,該怎么辦呢?憑我的智商,只能用下面的曲線救國的方法:

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

當上面的var1與var2變成任何值時,哪怕有字符串,上面的也是可以對付 。

?今天的簡單分享就到這里,希望朋友們有用;上面只是舉例,事實的情況,數據是相當大的。所以希望用簡單的例子,來應對復雜的情況。

當然了,相信有更簡單的實現方法,希望朋友們留言。

參考文獻?

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

往期回顧

01

基本概念

從零開始學R-001篇-程序安裝

從零開始學R-002篇-向量

從零開始學R-003篇-數據框

從零開始學R-004篇-列表

從零開始學R-005篇-矩陣

數據結構-006篇-數組實例

數據結構-007篇-因子

?數據運算-008篇-數學與邏輯運算

數據運算-009篇-矩陣運算簡單介紹

數據運算-010篇-內置的一般數學計算函數

數據運算-011篇-內置的統計概率函數

數據運算-012篇-集合的操作

邏輯運算-013篇-條件語句

循環語句-014篇-for與while

循環語句-015篇-apply家族

定位函數-016篇-which函數打天下

字符處理-017篇-paste函數

字符處理-018篇-grep,substr,sub等函數

數據運算-019篇-統計函數初體驗median與mad

數據運算-020篇-統計函數初體驗之分位數quantile

數據運算-021篇-統計函數初體驗之差分diff函數

數據運算-022篇-統計函數初體驗之中心化函數scale

數據運算-023篇-描述性統計分析及缺失值分析

數據運算-024篇-相關系數分析

數據運算-025篇-dplyr之slice

數據運算-026篇-數據的行拆分

數據運算-027篇-數據的行合并

數據運算-028篇-rlang的列引用方法

數據運算-029篇-對多列數據框進行格式轉換

02

基礎作圖

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

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

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

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

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

R的作圖-006篇-plot函數

R的作圖-007篇-散點圖與線性擬合

R的作圖-008篇-散點圖矩陣

R的作圖-009篇-高密度散點圖

R的作圖-010篇-三維散點圖

R的作圖-011篇-氣泡圖

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

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

R的作圖-014篇-lm擬合結果圖解釋

R的作圖-015篇-ggplot2之初體驗

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

作圖進階-031篇-ggplot2之geom_violin

作圖進階-032篇-ggplot2之分面facet_grid與facet_wrap

作圖進階-033篇-ggplot2之legend

作圖進階-034篇-ggplot2之作圖區的設定

作圖進階-035篇-ggalluvial之桑基圖

作圖進階-036篇-ggridges之峰巒圖

作圖進階-037篇-坐標軸標簽重疊的優化

作圖進階-038篇-數據擬合作圖分析

作圖進階-039篇-plotly包之add_XXX

作圖進階-040篇-plotly的type與mode

作圖進階-041篇-plotly的顏色設置

作圖進階-042篇-plotly中往圖中增加標簽

作圖進階-043篇-plotly通過add_fun靈活疊加圖

作圖進階-044篇-plotly的圖例legend設置

作圖進階-045篇-plotly的坐標軸Ticks設置

作圖進階-046篇-plotly設定默認的trace顏色

作圖進階-047篇-plotly中畫誤差棒作圖進階-048篇-plotly中的箱線圖

作圖進階-049篇-plotly中的動畫效果

作圖進階-050篇-plotly中二維密度與等高線

作圖進階-051篇-add_heatmap的使用

作圖進階-052篇-add_ribbons與polygons的使用

作圖進階-053篇-add_segments,add_paths與add_table

作圖進階-054篇-基于矩陣畫熱圖

作圖進階-055篇-mesh3d畫個雨傘玩玩

作圖進階-056篇-經驗累積分布函數的實現

作圖進階-057篇-畫個瓶子玩玩

?作圖進階-058篇-plotly中的曲線旋轉

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

03

作圖技巧

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

作圖技巧-002篇-ggplot2?中的字體設置

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

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

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

作圖技巧-006篇-數據標記初體驗

作圖技巧-007篇-數據標記之geom_mark_hull進階

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

作圖技巧-009篇-ggplot作圖時的因子排序

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

作圖技巧-011篇-ggplot_build中的數據提取實現histogram與density同步疊加

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

作圖技巧-013篇-ggplot分面圖的標簽設置

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

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

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

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

作圖技巧-018篇-第二坐標軸在ggplot2中的實現

作圖技巧-019篇-draw_key_XXX系列

作圖技巧-020篇-更改ggplot2作圖的默認設置

作圖技巧-021篇-增加基于表達式的坐標軸標題

04

R的技巧

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

R的技巧-002篇-快速對數據框中滿足條件的列進行替換

R的技巧-003篇-數字的不同取整與進位

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

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

R的技巧-006篇-ggplot2中的cut類函數

R的技巧-007篇-assign與get:動態生成變量與獲取變量

R的技巧-008篇-pretty函數實現完美分割點

R的技巧-009篇-數據填充? ???????????????

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

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

R的技巧-012篇-縫縫補補改創建好的ggplot2圖

R的技巧-013篇-approx函數插值

R的技巧-014篇-openxls包處理excel數據

?

歡迎關注與轉發,如有不懂,可以共同探討,在后臺留言或者是掃碼下方。

你點的每一個在看,我都認真當成了喜歡

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。