[英]Separate with specific pattern in multiple columns with R (CRAN)
我使用 R 並且字符串有一些問題,我正在研究它們。
我有一個包含以下字符串的列的數據集:
"PA=135 65 (07:52) TC=36,7 (07:52) Diur.=750 (07:52) SO2=96 1 l/m (07:52) FC=75 r (07:52)"
"PA=120 60 (08:27) TC=36,5 (08:27) Diur.=2500 (28/09/20 11:30) SO2=97 (08:27) FC=74 (08:27)"
"PA=140 80 (08:44) TC=36,2 (08:44) SO2=96 (08:44) FC=71 (08:44) Stick=108 (03/10/20 18:36)"
"PA=119 83 (08:44) TC=37 (08:44) SO2=95 (08:44) FC=70 (08:44) Stick=158 (08:45)"
"PA=140 70 (10:12) TC=36 (10:12) SO2=100 Vm 10 l/m (10:12) FC=50 r (10:12)"
"PA=140 70 (10:12) TC=36 (10:12) SO2=100 Vm 10 l/m (10:12) FC=50 r (10:12)"
我想按如下方式分隔這些字符串(我認為這比以下字符串更容易):
[1] [2] [3] [4] [5]
#1 PA=135 65 TC=36,7 Diur.=750 SO2=96 1 l/m FC=75
#2 PA=120 60 TC=36,5 Diur.=2500 SO2=97 FC=74
#3 PA=140 80 TC=36,2 SO2=96 FC=71 Stick=108
#4 PA=119 83 TC=37 SO2=95 FC=70 Stick=158
#5 PA=140 70 TC=36 SO2=100 Vm 10 l/m FC=50 NA
另外,我想知道是否可以通過以下方式設置列:
[PA] [TC] [Diur] [SO2] [FC] [Stick]
#1 135 65 36,7 750 96 1 l/m 75 NA
#2 120 60 36,5 2500 97 74 NA
#3 140 80 36,2 NA 96 71 108
#4 119 83 37 NA 95 70 158
#5 140 70 36 NA 100 Vm 10 l/m 50 NA
我試圖用“(”或“:”或“)”分隔,但結果並不讓我滿意,我無法以正確的方式處理數據。
我希望這是你想要的:
df %>%
mutate("[PA]" = str_extract(string, "(?<=PA=)\\d+\\s\\d+"),
"[TC]" = str_extract(string, "(?<=TC=)\\d+(,\\d+)?"),
"[Diur]" = str_extract(string, "(?<=Diur\\.=)\\d+"),
"[SO2]" = str_extract(string, "(?<=SO2=)\\d+[^(]*"),
"[FC]" = str_extract(string, "(?<=FC=)\\d+"),
"[Stick]" = str_extract(string, "(?<=Stick=)\\d+")) %>%
mutate(across(matches("[A-Z]"), ~trimws(.))) %>%
select(-string)
[PA] [TC] [Diur] [SO2] [FC] [Stick]
1 135 65 36,7 750 96 1 l/m 75 <NA>
2 120 60 36,5 2500 97 74 <NA>
3 140 80 36,2 <NA> 96 71 108
4 119 83 37 <NA> 95 70 158
5 140 70 36 <NA> 100 Vm 10 l/m 50 <NA>
6 140 70 36 <NA> 100 Vm 10 l/m 50 <NA>
這主要利用后向表達式(?<=...)
,它斷言一個條件模式,該模式必須匹配才能使目標匹配匹配。 例如,使用(?<=PA=)\\d+\\s\\d+
您提取那些以字符串PA=
開頭的數字-空白-數字字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.