Tôi đang cố gắng lọc cột Biểu tượng dựa trên việc nó có dạng không \uxxxx
Đây là dễ dàng trực quan, có nghĩa là, một số trông giống như $
, ¢
, £
, và những người khác như \u058f
, \u060b
, \u07fe
.
Nhưng tôi dường như không thể tìm ra nó bằng cách sử dụng stringi
/dplyr
library(dplyr)
library(stringi)
df <- structure(list(Character = c("\\u0024", "\\u00A2", "\\u00A3",
"\\u00A4", "\\u00A5", "\\u058F", "\\u060B", "\\u07FE", "\\u07FF",
"\\u09F2", "\\u09F3", "\\u09FB", "\\u0AF1", "\\u0BF9", "\\u0E3F",
"\\u17DB", "\\u20A0", "\\u20A1", "\\u20A2", "\\u20A3"),
Symbol = c("$", "¢", "£", "¤", "¥", "\u058f", "\u060b", "\u07fe", "\u07ff",
"৲", "৳", "\u09fb", "\u0af1", "\u0bf9", "฿", "៛", "₠",
"₡", "₢", "₣")), row.names = c(NA, 20L), class = "data.frame")
Character Symbol
1 \\u0024 $
2 \\u00A2 ¢
3 \\u00A3 £
4 \\u00A4 ¤
5 \\u00A5 ¥
6 \\u058F \u058f
7 \\u060B \u060b
8 \\u07FE \u07fe
9 \\u07FF \u07ff
10 \\u09F2 ৲
11 \\u09F3 ৳
12 \\u09FB \u09fb
13 \\u0AF1 \u0af1
14 \\u0BF9 \u0bf9
15 \\u0E3F ฿
16 \\u17DB ៛
17 \\u20A0 ₠
18 \\u20A1 ₡
19 \\u20A2 ₢
20 \\u20A3 ₣
Những gì tôi đã thử
Tôi đã thử sử dụng các biến thể trên nchar
nhưng không gặp may mắn
df$Symbol %>% nchar
# [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
df$Symbol %>% stri_unescape_unicode %>% nchar
# [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
df$Symbol %>% stri_escape_unicode %>% nchar
# [1] 1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
Câu hỏi
Làm thế nào tôi có thể lọc trên cột Symbol cho tất cả các hàng của hình thức $
, ¢
, £
vv (và ngược lại cho các hàng thích \u058f
, \u060b
, \u07fe
)?
Symbol
cột (Tôi cảm thấy như nó nên là đủ, nhưng tôi không thể làm việc ra làm thế nào để phân biệt - đó là thú vị bởi vì nó rất dễ dàng cho đôi mắt con người để xem)
utf8::utf8_valid()
nhưng điều này có thể không phân biệt giữa unicode hợp lệ hiện tại và unicode hợp lệ nhưng không được gán. Bạn có thể mở rộng một chút về những gì cuối cùng bạn đang cố gắng để đạt được?