Dữ liệu ký tự là gì cho ví dụ năm 2024

Các hàm kết hợp, thiết lập thứ tự, phân tách, sắp xếp -

# import case linelist linelist <- import("linelist_cleaned.rds")

47,

# import case linelist linelist <- import("linelist_cleaned.rds")

48,

# import case linelist linelist <- import("linelist_cleaned.rds")

49,

# import case linelist linelist <- import("linelist_cleaned.rds")

50

  • Làm sạch và chuẩn hóa
  • Các hàm điều chỉnh độ dài ký tự -

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    51,

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    52,

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    53
  • Các hàm thay đổi chữ hoa/chữ thường -

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    54,

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    55,

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    56,

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    57
  • Các hàm đánh giá và trích xuất vị trí -

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    58,

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    59,

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    60
  • Các hàm làm việc với patterns
  • Phát hiện và định vị -

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    61,

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    62,

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    63,

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    64
  • Sửa đổi và thay thế -

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    59,

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    66
  • Biểu thức chính quy (“regex”)

Để dễ hiển thị, hầu hết các code ví dụ đều mô phỏng trên một vectơ ngắn dạng ký tự đã được xác định, tuy nhiên chúng có thể dễ dàng áp dụng trên một cột trong bộ dữ liệu.

Package stringr vignette đã cung cấp nhiều ý tưởng cho chương này.

Chuẩn bị

Gọi packages

Cài đặt hoặc gọi package stringr và các packages tidyverse khác.

# install/load packages pacman::p_load( stringr, # many functions for handling strings tidyverse, # for optional data manipulation tools) # alternative for converting to title case

Nhập dữ liệu

Để bắt đầu, chúng ta nhập bộ dữ liệu có tên linelist đã làm sạch bao gồm các trường hợp từ vụ dịch Ebola mô phỏng. Để tiện theo dõi, bấm để tải dữ liệu linelist “đã được làm sạch” (dưới dạng tệp .rds). Nhập dữ liệu bằng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

67 từ package rio (nó xử lý nhiều loại tệp như .xlsx, .csv, .rds - xem thêm chương để biết thêm chi tiết).

# import case linelist linelist <- import("linelist_cleaned.rds")

50 hàng đầu tiên của bộ dữ liệu linelist được hiển thị bên dưới.

Hợp nhất, tách, và sắp xếp

Chương này bao gồm:

  • Sử dụng hàm

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    47,

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    48, và

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    70 để ghép nối ký tự
  • Sử dụng hàm

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    49 để sắp xếp ký tự
  • Sử dụng hàm

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    50 và

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    73 để phân tách ký tự

Kết hợp các chuỗi ký tự

Để kết hợp hoặc nối nhiều chuỗi ký tự thành một chuỗi ký tự, chúng tôi khuyên bạn nên sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

74 từ stringr. Nếu bạn có các giá trị ký tự riêng biệt để kết hợp, đơn giản chỉ cần cung cấp chúng dưới dạng đối số, được phân tách bằng dấu phẩy.

str_c("String1", "String2", "String3")

## [1] "String1String2String3"

Đối số

# import case linelist linelist <- import("linelist_cleaned.rds")

75 chèn một giá dạng trị ký tự vào giữa mỗi đối số ký tự bạn cung cấp (ví dụ: chèn dấu phẩy, dấu cách hoặc dòng mới

# import case linelist linelist <- import("linelist_cleaned.rds")

76)

str_c("String1", "String2", "String3", sep = ", ")

## [1] "String1, String2, String3"

Đối số

# import case linelist linelist <- import("linelist_cleaned.rds")

77 có liên quan nếu bạn đang nhập nhiều vectơ làm đối số cho hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

47. Nó được sử dụng để tách các phần tử của một vectơ kết quả, sao cho vectơ kết quả chỉ là một phần tử chứa ký tự dài.

Ví dụ dưới đây cho thấy sự kết hợp của hai vectơ thành một (tên và họ). Một ví dụ tương tự khác có thể là các phạm vi địa chính và số lượng trường hợp. Trong ví dụ này:

  • Giá trị

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    75 xuất hiện giữa từng họ và tên
  • Giá trị

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    77 xuất hiện giữa tên từng người

`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke")

sep displays between the respective input strings, while collapse displays between the elements produced

str_c(first_names, last_names, sep = " ", collapse = "; ")`

## [1] "abdul hussein;  fahruk akinleye;  janice okeke"

Lưu ý: Tùy thuộc vào trường hợp hiển thị mong muốn, khi in một chuỗi kết hợp như vậy với các dòng mới, bạn có thể cần phải đặt toàn bộ cụm từ trong hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

81 để các dòng mới được in đúng cách:

# For newlines to print correctly, the phrase may need to be wrapped in cat() cat(str_c(first_names, last_names, sep = " ", collapse = ";\n"))

## abdul hussein;
## fahruk akinleye;
## janice okeke

Chuỗi động

Sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

48 để chèn đoạn code động của R vào chuỗi ký tự. Đây là một hàm hữu dụng để tạo tiêu đề biểu đồ động, như được mô tả dưới đây:

  • Tất cả nội dung nằm giữa dấu ngoặc kép

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    83
  • Bất kỳ đoạn code động hoặc tham chiếu nào đến các giá trị được xác định trước đều được đặt trong dấu ngoặc nhọn

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    84, bên trong dấu ngoặc kép. Có thể có nhiều dấu ngoặc nhọn trong cùng một câu lệnh

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    48.
  • Để hiển thị dấu ngoặc kép “, hãy sử dụng dấu ngoặc đơn bên trong dấu ngoặc kép (ví dụ: khi cung cấp định dạng ngày - xem ví dụ bên dưới)
  • Mẹo: Bạn có thể sử dụng

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    86 để bắt buộc xuống một dòng mới
  • Mẹo: Bạn có thể sử dụng hàm

    import case linelist

    linelist <- import("linelist_cleaned.rds")

    87 để điều chỉnh hiển thị ngày và sử dụng hàm

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    88 để hiển thị ngày hiện tại.

Một ví dụ đơn giản về tiêu đề biểu đồ động:

# import case linelist linelist <- import("linelist_cleaned.rds")

0

# import case linelist linelist <- import("linelist_cleaned.rds")

1

Một định dạng thay thế là sử dụng trình giữ chỗ (placeholder) bên trong dấu ngoặc kép và chỉ định chúng trong các đối số ở phía sau trong hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

48 như bên dưới. Việc này sẽ làm tăng tính tường minh cho code nếu phần văn bản dài.

# import case linelist linelist <- import("linelist_cleaned.rds")

2

# import case linelist linelist <- import("linelist_cleaned.rds")

3

Kéo từ bộ dữ liệu

Đôi khi, sẽ rất hữu ích khi lấy dữ liệu từ một bộ dữ liệu và dán chúng lại với nhau theo trình tự. Dưới đây là một ví dụ về bộ dữ liệu. Chúng ta sẽ sử dụng cách này để có một phát biểu tóm tắt về các khu vực pháp lý, cũng như số ca mắc mới và tổng số ca.

# import case linelist linelist <- import("linelist_cleaned.rds")

4

Sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

90, được thiết kế để lấy dữ liệu từ các quan sát của bộ dữ liệu:

# import case linelist linelist <- import("linelist_cleaned.rds")

5

# import case linelist linelist <- import("linelist_cleaned.rds")

6

Kết hợp các chuỗi ký tự trên các dòng

Nếu bạn đang cố gắng để “gộp” các giá trị trong một cột của bộ dữ liệu, ví dụ: kết hợp các giá trị từ nhiều hàng thành một hàng bằng cách gắn chúng với nhau cùng ký tự phân cách, hãy xem thêm ở chương mục .

Một bộ dữ liệu thành một dòng

Bạn có thể tạo ra dãy thông tin chỉ trong một dòng bằng cách sử dụng lệnh

# import case linelist linelist <- import("linelist_cleaned.rds")

47 (cụ thể tên bộ dữ liệu và tên cột), đồng thời cung cấp các đối số

# import case linelist linelist <- import("linelist_cleaned.rds")

75 và

# import case linelist linelist <- import("linelist_cleaned.rds")

77.

# import case linelist linelist <- import("linelist_cleaned.rds")

7

# import case linelist linelist <- import("linelist_cleaned.rds")

8

Bạn có thể thêm đoạn tiền tố “New Cases:” vào đầu dòng thông tin bằng cách đặt trong hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

47 (nếu “New Cases:” nằm trong hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

47 ban đầu thì nó sẽ xuất hiện nhiều lần).

# import case linelist linelist <- import("linelist_cleaned.rds")

9

str_c("String1", "String2", "String3")

0

Hợp nhất các cột

Trong bộ dữ liệu, việc tập hợp các giá trị dạng ký tự từ nhiều cột lại với nhau có thể thực hiện bằng cách dùng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

70 từ package tidyr. Tính năng này ngược lại với hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

73.

Đầu tiên, cần tên của cột mới. Sau đó, cần tên của các cột mà bạn muốn hợp nhất.

  • Mặc định, dấu ngăn cách được sử dụng trong cột hợp nhất là dấu gạch dưới _, nhưng có thể được thay đổi bằng đối số

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    75.
  • import case linelist

    linelist <- import("linelist_cleaned.rds")
    99 loại bỏ các cột ban đầu ra khỏi bộ dữ liệu (mặc định là TRUE)
  • str_c("String1", "String2", "String3") 00 loại bỏ các giá trị bị thiếu trong khi hợp nhất (mặc định là FALSE)

Dưới đây, chúng tôi xác định một bộ dữ liệu ngắn để minh họa:

str_c("String1", "String2", "String3")

1

str_c("String1", "String2", "String3")

2

str_c("String1", "String2", "String3")

3

Đây là bộ dữ liệu mẫu:

Dưới đây, chúng tôi hợp nhất ba cột triệu chứng:

str_c("String1", "String2", "String3")

4

str_c("String1", "String2", "String3")

5

Tách chuỗi

Để tách một chuỗi ký tự dựa trên một quy luật, hãy sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

50. Hàm này đánh giá (các) chuỗi ký tự và trả về danh sách

str_c("String1", "String2", "String3")

02 các vectơ ký tự chứa các giá trị mới được tách.

Ví dụ đơn giản dưới đây đánh giá một chuỗi ký tự và chia nó thành ba phần. Mặc định, hàm trả về một đối tượng kiểu danh sách

str_c("String1", "String2", "String3")

02 với một phần tử (một vectơ ký tự) cho mỗi chuỗi được cung cấp ban đầu. Nếu

str_c("String1", "String2", "String3")

04 nó trả về một ma trận ký tự.

Trong ví dụ này, một chuỗi ký tự được cung cấp và hàm trả về một danh sách có một phần tử - một vectơ ký tự chứa ba giá trị.

str_c("String1", "String2", "String3")

6

str_c("String1", "String2", "String3")

7

Nếu kết quả được lưu, thì bạn có thể truy cập giá trị phân chia thứ n bằng cú pháp dấu ngoặc vuông. Để truy cập vào một giá trị cụ thể, bạn có thể sử dụng cú pháp như sau:

str_c("String1", "String2", "String3")

05, sẽ truy cập giá trị thứ hai từ chuỗi ký tự được đánh giá thứ nhất (“fever”). Xem thêm ở chương để biết thêm chi tiết về cách truy vấn các phần tử.

str_c("String1", "String2", "String3")

8

str_c("String1", "String2", "String3")

9

Nếu nhiều chuỗi ký tự được sử dụng trong hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

50, sẽ có nhiều hơn một phần tử trong danh sách trả về.

## [1] "String1String2String3"

0

## [1] "String1String2String3"

1

Thay vào đó, để trả về “ma trận chuỗi ký tự”, có thể sẽ hữu ích nếu tạo cột trong bộ dữ liệu, đặt đối số

str_c("String1", "String2", "String3")

04 như trình bày dưới đây:

## [1] "String1String2String3"

2

## [1] "String1String2String3"

3

Bạn cũng có thể điều chỉnh số phần tách ra với đối số

str_c("String1", "String2", "String3")

08. Ví dụ dưới đây giới hạn số phần tách ra là 2. Bất kỳ dấu phẩy nào khác vẫn sẽ nằm trong giá trị thứ hai.

## [1] "String1String2String3"

4

## [1] "String1String2String3"

5

Lưu ý - các kết quả tương tự có thể đạt được với hàm

str_c("String1", "String2", "String3")

09, trong đó bạn không dùng đối số

str_c("String1", "String2", "String3")

10 mà thay vào đó phải chỉ định số cột (

str_c("String1", "String2", "String3")

11).

## [1] "String1String2String3"

6

Tách cột

Nếu bạn đang cố gắng chia tách cột trong bộ dữ liệu, cách tốt nhất là sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

73 từ package dplyr. Nó được sử dụng để chia một cột ký tự thành các cột khác nhau.

Giả sử chúng ta có một bộ dữ liệu đơn giản

str_c("String1", "String2", "String3")

13 (được xác định và hợp nhất trong ) chứa một cột

str_c("String1", "String2", "String3")

14 , một cột dạng ký tự có nhiều triệu chứng và một cột outcome. Mục tiêu của chúng ta là tách cột

str_c("String1", "String2", "String3")

15 thành nhiều cột - mỗi cột chứa một triệu chứng.

Giả sử dữ liệu được đưa vào hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

73, trước tiên hãy chọn ra cột sẽ được phân tách. Sau đó, cung cấp thông tin tới đối số

str_c("String1", "String2", "String3")

17 dưới dạng vectơ

str_c("String1", "String2", "String3")

18 có chứa tên các cột mới, như được trình bày dưới đây.

  • Dấu phân cách trong

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    75 có thể là một ký tự hoặc một số (được hiểu là vị trí ký tự cần tách)
  • Mặc định là

    import case linelist

    linelist <- import("linelist_cleaned.rds")
    99 FALSE, xóa cột đầu vào ban ban đầu
  • Mặc định là str_c("String1", "String2", "String3")

    21 FALSE, các ký tự “NA” sẽ thành

    str_c("String1", "String2", "String3") 22
  • str_c("String1", "String2", "String3")

    23 kiểm soát điều gì sẽ xảy ra nếu có nhiều giá trị được tạo bởi sự phân tách nhiều hơn các cột mới được đặt tên.

    • str_c("String1", "String2", "String3") 24 có nghĩa là bạn sẽ thấy một cảnh báo nhưng nó sẽ loại bỏ các giá trị thừa (mặc định là vậy)
    • str_c("String1", "String2", "String3") 25 có nghĩa là các giá trị thừa sẽ bị loại bỏ mà không có cảnh báo
    • str_c("String1", "String2", "String3")

      26 sẽ chỉ phân tách thành số cột mới được liệt kê trong

      str_c("String1", "String2", "String3") 27 - thiết lập này sẽ bảo toàn tất cả dữ liệu của bạn

Dưới đây là một ví dụ về

str_c("String1", "String2", "String3")

26 - không có dữ liệu nào bị mất. Hai cột mới được xác định nhưng bất kỳ triệu chứng thứ ba nào sẽ quy về trong cột mới thứ hai:

## [1] "String1String2String3"

7

## [1] "String1String2String3"

8

## [1] "String1String2String3"

9

Khi sử dụng lệnh

str_c("String1", "String2", "String3")

25 mặc định như bên dưới, một cảnh báo sẽ được đưa ra nhưng triệu chứng thứ ba bị mất:

str_c("String1", "String2", "String3", sep = ", ")

0

str_c("String1", "String2", "String3", sep = ", ")

1

## [1] "String1String2String3"

8

str_c("String1", "String2", "String3", sep = ", ")

3

CẨN TRỌNG: Nếu bạn không cung cấp đủ giá trị

str_c("String1", "String2", "String3")

27 cho các cột mới, dữ liệu của bạn có thể bị cắt bớt .

Sắp xếp theo thứ tự bảng chữ cái

Một số chuỗi ký tự có thể được sắp xếp theo thứ tự bảng chữ cái. Hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

49 trả về thứ tự của các phần tử, trong khi hàm

str_c("String1", "String2", "String3")

32 trả về các chuỗi theo thứ tự đó.

str_c("String1", "String2", "String3", sep = ", ")

4

str_c("String1", "String2", "String3", sep = ", ")

5

str_c("String1", "String2", "String3", sep = ", ")

6

str_c("String1", "String2", "String3", sep = ", ")

7

Để sử dụng một bảng chữ cái khác, hãy thêm đối số

str_c("String1", "String2", "String3")

33. Xem danh sách đầy đủ các locales bằng cách gõ

str_c("String1", "String2", "String3")

34 trong cửa sổ R console.

Các hàm base R

Các hàm phổ biến của base R là

str_c("String1", "String2", "String3")

35 và

str_c("String1", "String2", "String3")

36 nối các vectơ sau khi chuyển đổi tất cả các cấu phần thành ký tự. Chúng hoạt động tương tự như

# import case linelist linelist <- import("linelist_cleaned.rds")

47 nhưng cú pháp được cho là phức tạp hơn - đó là trong ngoặc thì mỗi phần được phân tách bằng một dấu phẩy. Các cấu phần là ký tự dạng văn bản (trong dấu ngoặc kép) hoặc các đối tượng được xác định trước (không có dấu ngoặc kép). Ví dụ:

str_c("String1", "String2", "String3", sep = ", ")

8

str_c("String1", "String2", "String3", sep = ", ")

9

Đối số

# import case linelist linelist <- import("linelist_cleaned.rds")

75 và

# import case linelist linelist <- import("linelist_cleaned.rds")

77 có thể được cụ thể. Hàm

str_c("String1", "String2", "String3")

35 chỉ đơn giản dán

str_c("String1", "String2", "String3")

36 vớ đối số mặc định

str_c("String1", "String2", "String3")

42 (một khoảng trắng).

Làm sạch và chuẩn hóa

Thay đổi chữ hoa/chữ thường

Thông thường thì người ta cần phải thay đổi cách viết thường/viết hoa của một giá trị dạng chuỗi ký tự, ví dụ như tên địa danh. Hãy sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

54,

# import case linelist linelist <- import("linelist_cleaned.rds")

56, và

# import case linelist linelist <- import("linelist_cleaned.rds")

55 từ stringr, như dưới đây:

## [1] "String1, String2, String3"

0

## [1] "String1, String2, String3"

1

## [1] "String1, String2, String3"

2

## [1] "String1, String2, String3"

3

Sử dụng base R, bạn cũng có thể thực hiện điều trên với hàm

str_c("String1", "String2", "String3")

46,

str_c("String1", "String2", "String3")

47.

Định dạng tiêu đề

Biến đổi chuỗi ký tự sao cho mỗi từ được viết hoa có thể thực hiện được với hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

55:

## [1] "String1, String2, String3"

4

## [1] "String1, String2, String3"

5

Sử dụng hàm

str_c("String1", "String2", "String3")

49 từ package tools để chuyển đổi nhiều kiểu viết in hoa hơn (các từ như “to”, “the” và “of” không cần viết hoa).

## [1] "String1, String2, String3"

6

## [1] "String1, String2, String3"

7

Bạn cũng có thể sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

57, chỉ viết hoa chữ cái đầu tiên của chuỗi ký tự.

## [1] "String1, String2, String3"

8

## [1] "String1, String2, String3"

9

Độ dài chuỗi ký tự

Sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

51 để thêm các ký tự vào một chuỗi, với độ dài tối thiểu. Mặc định, khoảng trắng sẽ được thêm vào, nhưng bạn cũng có thể chèn các ký tự khác bằng cách sử dụng đối số

str_c("String1", "String2", "String3")

52.

`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke")

sep displays between the respective input strings, while collapse displays between the elements produced

str_c(first_names, last_names, sep = " ", collapse = "; ")`

0

`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke")

sep displays between the respective input strings, while collapse displays between the elements produced

str_c(first_names, last_names, sep = " ", collapse = "; ")`

1

`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke")

sep displays between the respective input strings, while collapse displays between the elements produced

str_c(first_names, last_names, sep = " ", collapse = "; ")`

2

`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke")

sep displays between the respective input strings, while collapse displays between the elements produced

str_c(first_names, last_names, sep = " ", collapse = "; ")`

3

Ví dụ: để chèn thêm số bằng các số 0 ở đầu (chẳng hạn như giờ hoặc phút), bạn có thể chèn số có độ dài tối thiểu là 2 với

str_c("String1", "String2", "String3")

53.

`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke")

sep displays between the respective input strings, while collapse displays between the elements produced

str_c(first_names, last_names, sep = " ", collapse = "; ")`

4

`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke")

sep displays between the respective input strings, while collapse displays between the elements produced

str_c(first_names, last_names, sep = " ", collapse = "; ")`

5

`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke")

sep displays between the respective input strings, while collapse displays between the elements produced

str_c(first_names, last_names, sep = " ", collapse = "; ")`

6

Cắt chuỗi ký tự

Hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

52 thiết lập độ dài tối đa cho mỗi chuỗi ký tự. Nếu một chuỗi vượt quá độ dài này, nó sẽ bị xén (rút ngắn) và kết thúc bằng một dấu ba chấm (…) ám chỉ rằng chuỗi đó chưa hiển thị hết các ký tự. Lưu ý rằng dấu ba chấm được tính toán phụ thuộc vào độ dài. Các ký tự dấu ba chấm có thể được thay đổi bằng đối số

str_c("String1", "String2", "String3")

55. Đối số tùy chọn

str_c("String1", "String2", "String3")

56 làm rõ vị trí mà dấu ba chấm sẽ xuất hiện trong chuỗi bị cắt ngắn (bên “trái”, “phải” hoặc “giữa”).

`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke")

sep displays between the respective input strings, while collapse displays between the elements produced

str_c(first_names, last_names, sep = " ", collapse = "; ")`

7

`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke")

sep displays between the respective input strings, while collapse displays between the elements produced

str_c(first_names, last_names, sep = " ", collapse = "; ")`

8

Chuẩn hóa độ dài

Sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

52 để thiết lập độ dài tối đa, sau đó sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

51 để tăng thêm độ dài cho các chuỗi rất ngắn sao cho bằng độ dài tiêu chuẩn. Trong ví dụ dưới đây, độ dài tối đa là 6 (một ký tự bị cắt giảm), và sau đó một giá trị rất ngắn được đệm thêm để đạt được độ dài chuỗi là 6.

`first_names <- c("abdul", "fahruk", "janice") last_names <- c("hussein", "akinleye", "okeke")

sep displays between the respective input strings, while collapse displays between the elements produced

str_c(first_names, last_names, sep = " ", collapse = "; ")`

9

## [1] "abdul hussein;  fahruk akinleye;  janice okeke"

0

## [1] "abdul hussein;  fahruk akinleye;  janice okeke"

1

## [1] "abdul hussein;  fahruk akinleye;  janice okeke"

2

Xóa khoảng trắng đầu/cuối

Sử dụng hàm

str_c("String1", "String2", "String3")

59 để xóa khoảng trắng, dòng mới (

# import case linelist linelist <- import("linelist_cleaned.rds")

  1. hoặc tabs (

str_c("String1", "String2", "String3")

  1. ở các phía của chuỗi đầu vào. Thêm

str_c("String1", "String2", "String3")

62

str_c("String1", "String2", "String3")

63, hoặc

str_c("String1", "String2", "String3")

64 vào lệnh để xác định phía nào cần cắt (ví dụ:

str_c("String1", "String2", "String3")

65.

## [1] "abdul hussein;  fahruk akinleye;  janice okeke"

3

## [1] "abdul hussein;  fahruk akinleye;  janice okeke"

4

Xóa khoảng trắng lặp lại phía trong

Sử dụng hàm

str_c("String1", "String2", "String3")

66 để loại bỏ các khoảng trắng lặp lại bên trong một chuỗi. Ví dụ, để chuyển đổi khoảng trắng lặp thành khoảng trắng đơn. Điều này cũng sẽ loại bỏ dấu cách, dòng mới hoặc tab ở phía bên ngoài chuỗi như giống như hàm

str_c("String1", "String2", "String3")

59.

## [1] "abdul hussein;  fahruk akinleye;  janice okeke"

5

## [1] "abdul hussein;  fahruk akinleye;  janice okeke"

6

str_c("String1", "String2", "String3")

68,

str_c("String1", "String2", "String3")

69 vào cửa sổ R console để biết thêm chi tiết.

Gói lại thành đoạn văn bản

Sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

53 để gói một đoạn văn bản dài không có cấu trúc thành một đoạn văn có cấu trúc với độ dài các dòng là cố định. Cần xác định độ dài lý tưởng cho mỗi dòng và áp dụng một thuật toán để chèn thêm dòng mới (

# import case linelist linelist <- import("linelist_cleaned.rds")

  1. vào trong đoạn văn bản, như ví dụ bên dưới.

## [1] "abdul hussein;  fahruk akinleye;  janice okeke"

7

## [1] "abdul hussein;  fahruk akinleye;  janice okeke"

8

Hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

81 trong base R có thể xử lý toàn bộ câu lệnh trên để trả kết quả, hiển thị các dòng mới được thêm vào.

## [1] "abdul hussein;  fahruk akinleye;  janice okeke"

9

# For newlines to print correctly, the phrase may need to be wrapped in cat() cat(str_c(first_names, last_names, sep = " ", collapse = ";\n"))

0

Xử lý theo vị trí

Tách chuỗi theo vị trí ký tự

Sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

59 để trả về một phần của chuỗi. Hàm chứa 3 đối số chính là:

  1. các vector ký tự
  2. vị trí bắt đầu
  3. vị trí kết thúc

Một vài lưu ý về số thứ tự vị trí:

  • Nếu số thứ tự vị trí là số dương, vị trí được xử lý bắt đầu từ vị trí cuối cùng bên trái của chuỗi.
  • Nếu số thứ tự vị trí là số âm, vị trí được xử lý bắt đầu từ vị trí cuối cùng bên phải của chuỗi.
  • Số thứ tự vị trí được bao gồm.
  • Các vị trí vượt quá chuỗi sẽ bị cắt bớt (loại bỏ).

Dưới đây là một số ví dụ được áp dụng cho chuỗi ký tự “pneumonia”:

# For newlines to print correctly, the phrase may need to be wrapped in cat() cat(str_c(first_names, last_names, sep = " ", collapse = ";\n"))

1

# For newlines to print correctly, the phrase may need to be wrapped in cat() cat(str_c(first_names, last_names, sep = " ", collapse = ";\n"))

2

# For newlines to print correctly, the phrase may need to be wrapped in cat() cat(str_c(first_names, last_names, sep = " ", collapse = ";\n"))

3

# For newlines to print correctly, the phrase may need to be wrapped in cat() cat(str_c(first_names, last_names, sep = " ", collapse = ";\n"))

4

# For newlines to print correctly, the phrase may need to be wrapped in cat() cat(str_c(first_names, last_names, sep = " ", collapse = ";\n"))

5

# For newlines to print correctly, the phrase may need to be wrapped in cat() cat(str_c(first_names, last_names, sep = " ", collapse = ";\n"))

6

# For newlines to print correctly, the phrase may need to be wrapped in cat() cat(str_c(first_names, last_names, sep = " ", collapse = ";\n"))

7

# For newlines to print correctly, the phrase may need to be wrapped in cat() cat(str_c(first_names, last_names, sep = " ", collapse = ";\n"))

8

# For newlines to print correctly, the phrase may need to be wrapped in cat() cat(str_c(first_names, last_names, sep = " ", collapse = ";\n"))

9

## abdul hussein;
## fahruk akinleye;
## janice okeke

0

Tách theo vị trí từ

Để tách ‘từ’ thứ n, hãy sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

60 cũng thuộc package stringr. Đầu tiên, xác định (các) chuỗi ký tự, sau đó là vị trí từ đầu tiên cần trích xuất và vị trí từ cuối cùng để trích xuất.

Mặc định, dấu phân cách giữa các ‘từ’ được giả định là khoảng trắng, trừ khi được chỉ định cách khác bằng đối số

# import case linelist linelist <- import("linelist_cleaned.rds")

75 (ví dụ:

str_c("String1", "String2", "String3")

76 khi các từ được phân tách bằng dấu gạch dưới)

## abdul hussein;
## fahruk akinleye;
## janice okeke

1

## abdul hussein;
## fahruk akinleye;
## janice okeke

2

Thay thế theo vị trí ký tự

Hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

59 được ghép nối với toán tử gán (

str_c("String1", "String2", "String3")

  1. có thể được sử dụng để sửa đổi một phần của chuỗi ký tự:

## abdul hussein;
## fahruk akinleye;
## janice okeke

3

## abdul hussein;
## fahruk akinleye;
## janice okeke

4

Một ví dụ áp dụng cho nhiều chuỗi (ví dụ: một cột). Lưu ý sự mở rộng về độ dài của từ “HIV”.

## abdul hussein;
## fahruk akinleye;
## janice okeke

5

## abdul hussein;
## fahruk akinleye;
## janice okeke

6

Đánh giá độ dài chuỗi

## abdul hussein;
## fahruk akinleye;
## janice okeke

7

Ngoài ra, có thể sử dụng hàm

str_c("String1", "String2", "String3")

79 từ base R

Quy luật chuỗi

Nhiều hàm stringr được sử dụng để nhận diện, định vị, trích xuất, khớp, thay thế và phân tách dựa trên một pattern - quy luật được chỉ định. .

Nhận diện quy luật

Sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

61 như bên dưới để phát hiện sự hiện diện/sự vắng mặt của một quy luật trong chuỗi. Đầu tiên, hãy cung cấp cho chuỗi hoặc vectơ cần tìm tới hàm (

str_c("String1", "String2", "String3")

81), sau đó là quy luật tìm kiếm (

str_c("String1", "String2", "String3")

82). Lưu ý rằng theo mặc định thì tìm kiếm phân biệt chữ hoa chữ thường!

## abdul hussein;
## fahruk akinleye;
## janice okeke

8

## abdul hussein;
## fahruk akinleye;
## janice okeke

9

Đối số

str_c("String1", "String2", "String3")

83 có thể được bao gồm và đặt thành

str_c("String1", "String2", "String3")

84 nếu bạn muốn tìm một quy luật KHÔNG xuất hiện.

# import case linelist linelist <- import("linelist_cleaned.rds")

00

# import case linelist linelist <- import("linelist_cleaned.rds")

01

Để bỏ qua chữ hoa / chữ thường, hãy đặt pattern trong hàm

str_c("String1", "String2", "String3")

85, và bên trong hàm

str_c("String1", "String2", "String3")

85 hãy thêm đối số

str_c("String1", "String2", "String3")

87 (hoặc viết tắt là

str_c("String1", "String2", "String3")

88).

# import case linelist linelist <- import("linelist_cleaned.rds")

02

## abdul hussein;
## fahruk akinleye;
## janice okeke

9

Khi hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

61 được áp dụng cho một vectơ ký tự hoặc một cột trong bộ dữ liệu, nó sẽ trả về giá trị TRUE hoặc FALSE cho mỗi giá trị.

# import case linelist linelist <- import("linelist_cleaned.rds")

04

# import case linelist linelist <- import("linelist_cleaned.rds")

05

Nếu bạn cần đếm giá trị

str_c("String1", "String2", "String3")

84, chỉ cần đơn giản tính tổng bằng hàm

str_c("String1", "String2", "String3")

91 kết quả đầu ra. Nó sẽ đếm số lượng giá trị

str_c("String1", "String2", "String3")

84.

# import case linelist linelist <- import("linelist_cleaned.rds")

06

# import case linelist linelist <- import("linelist_cleaned.rds")

07

Để tìm kiếm bao gồm nhiều cụm từ, hãy nhóm chúng bằng ký tự OR (

str_c("String1", "String2", "String3")

  1. bên trong đối số

str_c("String1", "String2", "String3")

82 như được trình bày dưới đây:

# import case linelist linelist <- import("linelist_cleaned.rds")

08

## abdul hussein;
## fahruk akinleye;
## janice okeke

7

Nếu bạn cần xây dựng một danh sách dài gồm các cụm từ cần tìm kiếm, bạn có thể kết hợp chúng bằng cách sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

47 và

str_c("String1", "String2", "String3")

96, sau đó chỉ định nó là một đối tượng dạng ký tự, và sau đó tham chiếu vector một cách ngắn gọn hơn. Ví dụ dưới đây bao gồm các cụm từ tìm kiếm bao gồm các nghề nghiệp có thể sử dụng cho các nhà cung cấp dịch vụ y tế tuyến đầu.

# import case linelist linelist <- import("linelist_cleaned.rds")

10

# import case linelist linelist <- import("linelist_cleaned.rds")

11

Lệnh này trả về số lượng nghề nghiệp mà chứa bất kỳ một trong các cụm từ tìm kiếm dành cho nhà cung cấp dịch vụ y tế tuyến đầu (

str_c("String1", "String2", "String3")

97):

# import case linelist linelist <- import("linelist_cleaned.rds")

12

# import case linelist linelist <- import("linelist_cleaned.rds")

13

Các hàm tìm kiếm chuỗi trong Base R

Hàm

str_c("String1", "String2", "String3")

98 trong base R hoạt động tương tự như hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

61, trong đó nó tìm kiếm các kết quả phù hợp với một quy luật và trả về một vectơ logic. Cú pháp cơ bản đó là

## [1] "String1String2String3"

00. Một ưu điểm đó là đối số

## [1] "String1String2String3"

01 dễ viết hơn (không cần có sự tham gia của hàm

str_c("String1", "String2", "String3")

85).

Tương tự như vậy, các hàm

## [1] "String1String2String3"

03 và

## [1] "String1String2String3"

04 của base R hoạt động tương tự như hàm

## [1] "String1String2String3"

05. Cú pháp cơ bản đó là:

## [1] "String1String2String3"

06.

## [1] "String1String2String3"

03 sẽ thay thế trường hợp đầu tiên của pattern, trong khi

## [1] "String1String2String3"

04 sẽ thay thế tất cả các trường hợp của pattern.

Chuyển đổi dấu phẩy thành dấu chấm

Sau đây là một ví dụ về việc sử dụng hàm

## [1] "String1String2String3"

04 để chuyển đổi dấu phẩy thành dấu chấm trong một vectơ dạng số. Điều này có thể hữu ích nếu dữ liệu của bạn bắt nguồn từ nhiều nơi trên thế giới ngoài Hoa Kỳ hoặc Vương quốc Anh.

Hàm

## [1] "String1String2String3"

04 ở bên trong đầu tiên hoạt động trên đối tượng

## [1] "String1String2String3"

11 để chuyển đổi bất kỳ dấu chấm nào thành không có khoảng trắng ““. Ký tự dấu chấm”.” phải được “đi liền” với hai dấu gạch chéo để biểu thị một dấu chấm, bởi vì “.” trong biểu thức chính quy có nghĩa là “bất kỳ ký tự nào”. Sau đó, kết quả (chỉ có dấu phẩy) được chuyển tiếp đến hàm

## [1] "String1String2String3"

04 bên ngoài trong đó dấu phẩy được thay thế bằng dấu chấm.

# import case linelist linelist <- import("linelist_cleaned.rds")

14

Thay thế toàn bộ

Sử dụng hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

66 như là một công cụ “find and replace (tìm kiếm và thay thế)”. Đầu tiên, cung cấp các chuỗi ký tự sẽ được đánh giá tới đối số

str_c("String1", "String2", "String3")

81, sau đó là quy luật sẽ được thay thế vào đối số

str_c("String1", "String2", "String3")

82, và sau đó là giá trị thay thế vào

## [1] "String1String2String3"

16. Ví dụ dưới đây thay thế tất cả các trường hợp “dead” bằng “deceased”. Lưu ý, phân biệt chữ hoa chữ thường.

# import case linelist linelist <- import("linelist_cleaned.rds")

15

# import case linelist linelist <- import("linelist_cleaned.rds")

16

Lưu ý:

  • Để thay thế một pattern cho str_c("String1", "String2", "String3")

    22, sử dụng hàm

    [1] "String1String2String3"

    18.
  • Hàm

    [1] "String1String2String3"

    05 thay thế duy nhất trường hợp đầu tiên của pattern trong mỗi chuỗi ký tự.

Nhận diện logic

Bên trong hàm

## [1] "String1String2String3"

20

# import case linelist linelist <- import("linelist_cleaned.rds")

61 thường được sử dụng trong hàm

## [1] "String1String2String3"

20 (từ dplyr). Hãy coi

## [1] "String1String2String3"

23 là một cột trong bộ linelist. Hàm

## [1] "String1String2String3"

24 dưới đây tạo một cột mới gọi là

## [1] "String1String2String3"

25 bằng cách sử dụng logic có điều kiện bởi

## [1] "String1String2String3"

20. Xem thêm ở chương về làm sạch dữ liệu để hiểu hơn về hàm

## [1] "String1String2String3"

20.

# import case linelist linelist <- import("linelist_cleaned.rds")

17

Xin nhắc lại, điều quan trọng là phải thêm tiêu chí loại trừ vào điều kiện logic (

## [1] "String1String2String3"

28):

# import case linelist linelist <- import("linelist_cleaned.rds")

18

Định vị vị trí pattern

Để xác định vị trí đầu tiên của một pattern, hãy sử dụng hàm

## [1] "String1String2String3"

29. Nó xuất ra vị trí bắt đầu và kết thúc.

# import case linelist linelist <- import("linelist_cleaned.rds")

19

# import case linelist linelist <- import("linelist_cleaned.rds")

20

Giống như các hàm

## [1] "String1String2String3"

30 khác, có một phiên bản “_all” (

## [1] "String1String2String3"

  1. sẽ trả về vị trí của tất cả các phiên bản của pattern trong mỗi chuỗi. Kết quả này xuất ra dưới dạng danh sách

str_c("String1", "String2", "String3")

02.

# import case linelist linelist <- import("linelist_cleaned.rds")

21

# import case linelist linelist <- import("linelist_cleaned.rds")

22

# import case linelist linelist <- import("linelist_cleaned.rds")

23

# import case linelist linelist <- import("linelist_cleaned.rds")

24

Trích xuất kết quả ghép cặp

## [1] "String1String2String3"

33 trả về các patterns được matching, sẽ hữu dụng nhất khi bạn cung cấp một vài patterns thông qua điều kiện “OR”. Ví dụ: tìm trong vectơ chuỗi nghề nghiệp (xem tab trước) các từ “teach”, “prof” hoặc “tutor”.

## [1] "String1String2String3"

33 trả về một danh sách

str_c("String1", "String2", "String3")

02 chứa tất cả các kết quả ghép cặp cho mỗi chuỗi được đánh giá. Xem dưới đây ta thấy occupation 3 có hai pattern được tìm thấy.

# import case linelist linelist <- import("linelist_cleaned.rds")

25

# import case linelist linelist <- import("linelist_cleaned.rds")

26

# import case linelist linelist <- import("linelist_cleaned.rds")

64 chỉ trích xuất kết quả ghép cặp đầu tiên trong mỗi chuỗi được xem xét, tạo ra một vectơ ký tự với một phần tử cho mỗi chuỗi được xem xét. Nó trả về giá trị

str_c("String1", "String2", "String3")

22 khi không có giá trị nào được tìm thấy. Các giá trị

str_c("String1", "String2", "String3")

22 có thể được loại bỏ bằng cách đặt vectơ trả về trong hàm

## [1] "String1String2String3"

39. Lưu ý đoạn khớp nối thứ hai của occupation 3 không được hiển thị.

# import case linelist linelist <- import("linelist_cleaned.rds")

27

# import case linelist linelist <- import("linelist_cleaned.rds")

28

Tập hợp con và số lượng

Bao gồm hàm

# import case linelist linelist <- import("linelist_cleaned.rds")

62 và

## [1] "String1String2String3"

41.

# import case linelist linelist <- import("linelist_cleaned.rds")

62 trả về các giá trị thực có chứa pattern:

# import case linelist linelist <- import("linelist_cleaned.rds")

29

# import case linelist linelist <- import("linelist_cleaned.rds")

30

## [1] "String1String2String3"

41 trả về một vectơ số: số lần một cụm từ tìm kiếm xuất hiện trong mỗi giá trị được xem xét.

# import case linelist linelist <- import("linelist_cleaned.rds")

31

# import case linelist linelist <- import("linelist_cleaned.rds")

32

Nhóm Regex

ĐANG ĐƯỢC XÂY DỰNG

Các ký tự đặc biệt

Dấu gạch chéo ngược

## [1] "String1String2String3"

44 để bỏ qua

Dấu gạch chéo ngược

## [1] "String1String2String3"

44 được sử dụng “để bỏ qua” nghĩa của ký tự tiếp theo. Bằng cách này, dấu gạch chéo ngược có thể được sử dụng để hiển thị dấu ngoặc kép bên trong các dấu ngoặc kép khác (

## [1] "String1String2String3"

  1. - dấu ngoặc kép ở giữa sẽ không “phá vỡ” các dấu ngoặc kép xung quanh.

Lưu ý - do đó, nếu bạn muốn hiển thị một dấu gạch chéo ngược, bạn phải ngắt nghĩa của nó bằng một dấu gạch chéo ngược khác. Vì vậy, bạn phải viết hai dấu gạch chéo ngược

## [1] "String1String2String3"

47 để chỉ hiển thị một.

Các ký tự đặc biệt

Ký tự đặc biệt Ý nghĩa

## [1] "String1String2String3"

48 Dấu gạch chéo ngược

# import case linelist linelist <- import("linelist_cleaned.rds")

76 một dòng mới

## [1] "String1String2String3"

50 dấu ngoặc kép trong dấu ngoặc kép

## [1] "String1String2String3"

51 dấu ngoặc đơn trong dấu ngoặc đơn

## [1] "String1String2String3"

52“

## [1] "String1String2String3"

53”

## [1] "String1String2String3"

54“

## [1] "String1String2String3"

55”

## [1] "String1String2String3"

56“` backspace

## [1] "String1String2String3"

57 trong cửa sổ R Console để hiển thị danh sách đầy đủ các ký tự đặc biệt (nó sẽ xuất hiện trong cửa sổ Help của RStudio).

Biểu thức chính quy (regex)

Regex và các ký tự đặc biệt

Biểu thức chính quy, hoặc “regex”, là một ngôn ngữ ngắn gọn để mô tả các patterns trong chuỗi ký tự. Nếu bạn không quen với nó, một biểu thức chính quy có thể trông giống như một ngôn ngữ ngoài hành tinh. Ở đây chúng tôi cố lột tả ngôn ngữ này dễ hiểu hơn

Phần lớn nội dung mục này được tham khảo từ hướng dẫn này và cheatsheet này. Chúng tôi tóm tắt một cách chọn lọc ở đây khi biết rằng cuốn ebook này có thể được xem bởi những người không có quyền truy cập internet để có thể xem các hướng dẫn khác.

Một biểu thức chính quy thường được áp dụng để trích xuất các pattern cụ thể từ văn bản “không có cấu trúc” - ví dụ: ghi chú y tế, khiếu nại, tiền sử bệnh tật hoặc các cột văn bản khác trong bộ dữ liệu.

Có bốn công cụ cơ bản mà người ta có thể sử dụng để tạo một biểu thức chính quy cơ bản:

  1. Bộ ký tự
  2. Siêu ký tự
  3. Bộ định lượng
  4. Nhóm

Bộ ký tự

Bộ ký tự, là một cách thể hiện các tùy chọn liệt kê phù hợp với ký tự gốc, trong dấu ngoặc. Vì vậy, mọi kết quả khớp sẽ được đánh dấu nếu tìm thấy bất kỳ ký tự nào trong dấu ngoặc trong chuỗi. Ví dụ, để tìm các nguyên âm, người ta có thể sử dụng bộ ký tự này: “[aeiou]”. Một số bộ ký tự phổ biến khác là:

Bộ ký tự Ghép cặp

## [1] "String1String2String3"

58 bất kỳ ký tự viết hoa đơn lẻ nào

## [1] "String1String2String3"

59 bất kỳ ký tự viết thường đơn lẻ nào

## [1] "String1String2String3"

60 bất kỳ số nào

## [1] "String1String2String3"

61 bất kỳ ký tự chữ và số nào

## [1] "String1String2String3"

62 bất kỳ chữ số nào

## [1] "String1String2String3"

63 bất kỳ ký tự nào (viết hoa hoặc viết thường)

## [1] "String1String2String3"

64 bất kỳ ký tự viết hoa nào

## [1] "String1String2String3"

65 bất kỳ ký tự viết thường nào

Các bộ ký tự có thể được kết hợp trong một dấu ngoặc vuông (không có khoảng trắng!), chẳng hạn như

## [1] "String1String2String3"

66 (bất kỳ chữ cái viết hoa hoặc viết thường nào), hoặc một ví dụ khác

## [1] "String1String2String3"

67 (từ t viết thường đến z HOẶC số 0 đến 5).

Siêu ký tự

Các siêu ký tự là cách viết tắt của các bộ ký tự. Một số điều quan trọng được liệt kê dưới đây:

Siêu ký tự Ý nghĩa

## [1] "String1String2String3"

68 khoảng trắng đơn

## [1] "String1String2String3"

69 bất kỳ ký tự chữ hoặc số đơn lẻ nào (A-Z, a-z, or 0-9)

## [1] "String1String2String3"

70 bất kỳ chữ số đơn lẻ nào (0-9)

Bộ định lượng

Thông thường, bạn không muốn tìm kiếm kết quả phù hợp chỉ trên một ký tự. Bộ định lượng cho phép bạn chỉ định độ dài của các chữ cái/số để cho phép ghép nối.

Bộ định lượng là các số được viết trong dấu ngoặc nhọn

## [1] "String1String2String3"

71 sau ký tự mà chúng đang định lượng, ví dụ:

  • [1] "String1String2String3"

    72 sẽ trả về trường hợp hai chữ cái A viết hoa.
  • [1] "String1String2String3"

    73 sẽ trả về các trường hợp từ hai đến bốn chữ cái A viết hoa (không đặt dấu cách!).
  • [1] "String1String2String3"

    74 sẽ trả về các trường hợp từ hai hoặc nhiều hơn chữ cái A viết hoa.
  • [1] "String1String2String3"

    75 sẽ trả về các trường hợp từ một hoặc nhiều hơn chữ cái A viết hoa (nhóm được mở rộng cho đến khi gặp một ký tự khác).
  • Bắt đầu bằng dấu hoa thị

    [1] "String1String2String3"

    76 để trả về không hoặc nhiều hơn kết quả phù hợp (hữu ích nếu bạn không chắc chắn pattern có sẵn)

Sử dụng ký hiệu dấu cộng

## [1] "String1String2String3"

77 như một bộ định lượng, việc khớp sẽ xảy ra cho tới khi gặp ký tự khác. Ví dụ, biểu thứ này sẽ trả về tất cả các từ (ký tự alpha:

## [1] "String1String2String3"

78

# import case linelist linelist <- import("linelist_cleaned.rds")

33

Khi bộ định lượng {2} được sử dụng, chỉ các cặp chữ A liên tiếp được trả về. Hai cặp được xác định trong

## [1] "String1String2String3"

79.

# import case linelist linelist <- import("linelist_cleaned.rds")

34

# import case linelist linelist <- import("linelist_cleaned.rds")

35

Khi bộ định lượng {2,4} được sử dụng, các nhóm chữ A liên tiếp có độ dài từ hai đến bốn được trả về.

# import case linelist linelist <- import("linelist_cleaned.rds")

36

# import case linelist linelist <- import("linelist_cleaned.rds")

37

Với bộ định lượng

## [1] "String1String2String3"

77, các nhóm của một hoặc nhiều hơn được trả về:

# import case linelist linelist <- import("linelist_cleaned.rds")

38

# import case linelist linelist <- import("linelist_cleaned.rds")

39

Vị trí tương đối

Những biểu thức dưới đây yêu cầu cho những thứ đứng trước hoặc theo sau một mẫu. Ví dụ, để trích xuất câu, “two numbers that are followed by a period” (

## [1] "String1String2String3"

81). (?<=\.)\s(?=[A-Z])

# import case linelist linelist <- import("linelist_cleaned.rds")

40

# import case linelist linelist <- import("linelist_cleaned.rds")

41

Biểu thức vị trí Khớp với

## [1] "String1String2String3"

82 “a” bị đứng trước bởi “b”

## [1] "String1String2String3"

83 “a” KHÔNG bị đứng trước bởi “b”

## [1] "String1String2String3"

84 “a” được theo sau bởi “b”

## [1] "String1String2String3"

85 “a” KHÔNG được theo sau bởi “b”

Nhóm

Việc bắt các nhóm trong biểu thức chính quy là một cách để kết quả trả về có tổ chức hơn khi trích xuất.

Ví dụ về Regex

Dưới đây là một văn bản tự do sử dụng làm ví dụ. Chúng ta sẽ cố gắng trích xuất thông tin hữu ích từ nó bằng cách sử dụng cụm từ tìm kiếm theo biểu thức chính quy.

# import case linelist linelist <- import("linelist_cleaned.rds")

42

Biểu thức sau đây khớp với tất cả các từ (bất kỳ ký tự nào cho đến khi gặp thứ không phải ký tự, chẳng hạn như dấu cách):

# import case linelist linelist <- import("linelist_cleaned.rds")

43

# import case linelist linelist <- import("linelist_cleaned.rds")

44

Biểu thức

## [1] "String1String2String3"

86 khớp với các số liên tiếp có độ dài 1 hoặc 2 chữ số. Nó cũng có thể được viết là

## [1] "String1String2String3"

87, hoặc

## [1] "String1String2String3"

88.