在 R 中將列拆分為兩列
本文將介紹如何在 R 中使用 separate
將一列拆分為兩列。
在 R 中使用 separate
函式將列拆分為兩列
separate
是 tidyr
包的一部分,它可用於將一個字元列拆分為多個帶有正規表示式或數字位置的列。在此程式碼示例中,我們宣告瞭一個包含逗號分隔的姓名/姓氏對字串的資料框。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"
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn