如何在 r 中将一列拆分为多列(附示例)


您可以使用以下两种方法之一将 R 中的一列拆分为多列:

方法1:使用str_split_fixed()

 library (stringr)

df[c(' col1 ', ' col2 ')] <- str_split_fixed(df$original_column, ' sep ', 2)

方法2:使用separate()

 library (dplyr)
library (tidyr)

df %>% separate(original_column, c(' col1 ', ' col2 '))

以下示例展示了如何在实践中使用每种方法。

方法1:使用str_split_fixed()

假设我们有以下数据框:

 #create data frame
df <- data. frame (player=c('John_Wall', 'Dirk_Nowitzki', 'Steve_Nash'),
                 dots=c(22, 29, 18),
                 assists=c(8, 4, 15))

#view data frame
df

         player points assists
1 John_Wall 22 8
2 Dirk_Nowitzki 29 4
3 Steve_Nash 18 15

我们可以使用stringr包中的str_split_fixed()函数将“player”列拆分为两个新列,分别称为“First”和“Last”,如下所示:

 library (stringr)

#split 'player' column using '_' as the separator
df[c(' First ', ' Last ')] <- str_split_fixed(df$player, ' _ ', 2)

#view updated data frame
df

         player points assists First Last
1 John_Wall 22 8 John Wall
2 Dirk_Nowitzki 29 4 Dirk Nowitzki
3 Steve_Nash 18 15 Steve Nash

请注意,数据框末尾添加了两个新列。

如果您愿意,可以随意重新排列列并删除原始的“玩家”列:

 #rearrange columns and leave out original 'player' column
df_final <- df[c('First', 'Last', 'points', 'assists')]

#view updated data frame
df_final

  First Last points assists
1 John Wall 22 8
2 Dirk Nowitzki 29 4
3 Steve Nash 18 15

方法2:使用separate()

下面的代码展示了如何使用Tidyr包的Separate()函数将“player”列分成“first”和“last”列:

 library (dplyr)
library (tidyr)

#create data frame
df <- data. frame (player=c('John_Wall', 'Dirk_Nowitzki', 'Steve_Nash'),
                 dots=c(22, 29, 18),
                 assists=c(8, 4, 15))

#separate 'player' column into 'First' and 'Last'
df %>% separate(player, c(' First ', ' Last '))

  First Last points assists
1 John Wall 22 8
2 Dirk Nowitzki 29 4
3 Steve Nash 18 15

请注意, Separate()函数将根据任何非字母数字值分隔字符串。

例如,如果名字和姓氏用逗号分隔, Separate()函数将根据逗号的位置自动分割:

 library (dplyr)
library (tidyr)

#create data frame
df <- data. frame (player=c('John,Wall', 'Dirk,Nowitzki', 'Steve,Nash'),
                 dots=c(22, 29, 18),
                 assists=c(8, 4, 15))

#separate 'player' column into 'First' and 'Last'
df %>% separate(player, c(' First ', ' Last '))

  First Last points assists
1 John Wall 22 8
2 Dirk Nowitzki 29 4
3 Steve Nash 18 15

您可以在此处找到Separate()函数的完整在线文档。

其他资源

以下教程解释了如何在 R 中执行其他常见操作:

如何在R中将两列合并为一列
如何在R中按列对数据框进行排序
如何在R中向数据框添加列

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注