在 R 中將列拆分為兩列

Jinku Hu 2023年1月30日
  1. 在 R 中使用 separate 函式將列拆分為兩列
  2. 在 R 中使用 extract 函式將列拆分為兩列
  3. 使用 str_split_fixed 函式將 R 中的列拆分為兩列
在 R 中將列拆分為兩列

本文將介紹如何在 R 中使用 separate 將一列拆分為兩列。

在 R 中使用 separate 函式將列拆分為兩列

separatetidyr 包的一部分,它可用於將一個字元列拆分為多個帶有正規表示式或數字位置的列。在此程式碼示例中,我們宣告瞭一個包含逗號分隔的姓名/姓氏對字串的資料框。separate 函式將資料框作為第一個引數,將列名作為第二個引數。第三個參數列示將成為新建立的字元向量的列名的變數名。請注意,我們使用 %>% 管道將 df 物件傳遞給 separate 函式。可以在名稱和姓氏用點分隔符分隔的資料幀上呼叫相同的函式呼叫。

library(dplyr)
library(tidyr)
library(stringr)

df <- data.frame(x = c('John, Mae', 'Maude, Lebowski', 'Mia, Amy', 'Andy, James'))
df1 <- data.frame(x = c('John. Mae', 'Maude. Lebowski', 'Mia. Amy', 'Andy. James'))

df %>% separate(x, c('Name', 'Surname'))

df1 %>% separate(x, c('Name', 'Surname'))

輸出:

> df %>% separate(x, c('Name', 'Surname'))
   Name   Surname
1  John       Mae
2 Maude  Lebowski
3   Mia       Amy
4  Andy     James

> df1 %>% separate(x, c('Name', 'Surname'))
   Name  Surname
1  John      Mae
2 Maude Lebowski
3   Mia      Amy
4  Andy    James

在 R 中使用 extract 函式將列拆分為兩列

將一列拆分為兩個單獨的列的另一個有用功能是 extract,它也是 tidyr 包的一部分。extract 函式適用於使用正規表示式組的列。請注意,每個正規表示式組都應對映到前一個引數中的專案。如果組和專案不匹配,則輸出將具有 NA 值。

library(dplyr)
library(tidyr)
library(stringr)

df <- data.frame(x = c('John, Mae', 'Maude, Lebowski', 'Mia, Amy', 'Andy, James'))

df %>% extract(x, c("Name", "Surname"), "([^,]+), ([^)]+)")

輸出:

> df %>% extract(x, c("Name", "Surname"), "([^,]+), ([^)]+)")

   Name  Surname
1  John      Mae
2 Maude Lebowski
3   Mia      Amy
4  Andy    James

使用 str_split_fixed 函式將 R 中的列拆分為兩列

或者,我們可以使用 stringr 包中的 str_split_fixed 函式。它匹配給定的字元模式並將字元向量拆分為相應的列數。雖然,使用者可以明確地傳遞要返回的拆分專案的數量。專案數作為第三個引數傳遞。

library(dplyr)
library(tidyr)
library(stringr)

df <- data.frame(x = c('John, Mae', 'Maude, Lebowski', 'Mia, Amy', 'Andy, James'))

str_split_fixed(df$x, ", ", 2)

輸出:

> str_split_fixed(df$x, ", ", 2)
     [,1]    [,2]      
[1,] "John"  "Mae"     
[2,] "Maude" "Lebowski"
[3,] "Mia"   "Amy"     
[4,] "Andy"  "James"
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook