Split column to multiple columns adaptively in R

DotPi

I have a dataframe that looks like the following:

Name    Value
abc     Asia
def     Asia/Africa
gbc     Africa
jhg     America/Africa/Asia

I want the column Value to be separated so that the dataframe looks as follows:

Name    Value.1    Value.2    Value.3
abc     Asia 
def     Asia       Africa
gbc     Africa
jhg     America    Africa    Asia

I know there are similar questions on stackoverflow (e.g. here, here ) but they assume that Value can be split into the same number of sections for each row. So, when I try to run the following commands:

out <- strsplit(as.character(df$Value),'/')
do.call(rbind, out)
data.frame(df$Value, do.call(rbind, out))

It works till the second line and then gives me the following error:

Error in data.frame(df$Value, do.call(rbind,  : 
  arguments imply differing number of rows: 24819, 24707
In addition: Warning message:
In (function (..., deparse.level = 1)  :
  number of columns of result is not a multiple of vector length (arg 10)

I also looked into reshape2 function colSplit and tidyr function separate. They also expect that for every row, Value can be seperated into exactly the same number of components, hence they expect me to name the columns in advance.

I am wondering of there is a way to adaptively name split the Value into separate columns called Value.1, Value.2,...

HubertL

In base R:

df <- read.table(textConnection("Name    Value
abc     Asia
def     Asia/Africa
gbc     Africa
jhg     America/Africa/Asia"), header=TRUE)

out <- strsplit(as.character(df$Value),'/')
out <- lapply(out, FUN=function(x) c(unlist(x), rep(NA, max(lengths(out))-length(x))))
out <- as.data.frame( cbind(df$Value,do.call(rbind, out)))

  V1      V2     V3   V4
1  3    Asia   <NA> <NA>
2  4    Asia Africa <NA>
3  1  Africa   <NA> <NA>
4  2 America Africa Asia

Same approach, written a bit different:

out <- strsplit(as.character(df$Value),'/')
cbind(df[1], do.call(rbind, lapply(out, 'length<-', max(lengths(out)))))
  Name       1      2    3
1  abc    Asia   <NA> <NA>
2  def    Asia Africa <NA>
3  gbc  Africa   <NA> <NA>
4  jhg America Africa Asia

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Split column into multiple columns R

From Dev

r: split column into multiple columns by value

From Dev

Split irregular text column into multiple columns in r

From Dev

How to split a character column into multiple columns in R

From Dev

Split column into multiple columns

From Dev

Split a column to multiple columns

From Dev

Split a dataframe column in multiple columns based on multiple occurrences of a separator in R

From Dev

R regular expression to split string column into multiple columns

From Dev

R: Split Variable Column into multiple (unbalanced) columns by comma

From Dev

regex -- split one column into multiple columns with no explicit delimiters in R

From Dev

Split one column into multiple columns

From Dev

split xml column into multiple columns

From Dev

Split Column value into multiple columns

From Dev

Mysql split column into multiple columns

From Dev

Split column values into multiple columns with

From Dev

Split one column into multiple columns

From Dev

Split a list column into multiple columns

From Dev

Split a dataframe in multiple columns in R

From Dev

SQL Server Split one column into multiple columns

From Java

Pandas split column of lists into multiple columns

From Dev

How to split a column into multiple columns ordered by date

From Dev

Split a column into multiple binary dummy columns

From Dev

Split semicolon-delimited column into multiple columns

From Dev

Python - Divide the column into multiple columns using Split

From Dev

Split a pandas column of dictionaries into multiple columns

From Dev

MySQL: Split longtext column into multiple text columns

From Dev

SQL Server Split one column into multiple columns

From Dev

1 long column split to multiple columns

From Dev

Split a Column in multiple columns according to a specific string

Related Related

  1. 1

    Split column into multiple columns R

  2. 2

    r: split column into multiple columns by value

  3. 3

    Split irregular text column into multiple columns in r

  4. 4

    How to split a character column into multiple columns in R

  5. 5

    Split column into multiple columns

  6. 6

    Split a column to multiple columns

  7. 7

    Split a dataframe column in multiple columns based on multiple occurrences of a separator in R

  8. 8

    R regular expression to split string column into multiple columns

  9. 9

    R: Split Variable Column into multiple (unbalanced) columns by comma

  10. 10

    regex -- split one column into multiple columns with no explicit delimiters in R

  11. 11

    Split one column into multiple columns

  12. 12

    split xml column into multiple columns

  13. 13

    Split Column value into multiple columns

  14. 14

    Mysql split column into multiple columns

  15. 15

    Split column values into multiple columns with

  16. 16

    Split one column into multiple columns

  17. 17

    Split a list column into multiple columns

  18. 18

    Split a dataframe in multiple columns in R

  19. 19

    SQL Server Split one column into multiple columns

  20. 20

    Pandas split column of lists into multiple columns

  21. 21

    How to split a column into multiple columns ordered by date

  22. 22

    Split a column into multiple binary dummy columns

  23. 23

    Split semicolon-delimited column into multiple columns

  24. 24

    Python - Divide the column into multiple columns using Split

  25. 25

    Split a pandas column of dictionaries into multiple columns

  26. 26

    MySQL: Split longtext column into multiple text columns

  27. 27

    SQL Server Split one column into multiple columns

  28. 28

    1 long column split to multiple columns

  29. 29

    Split a Column in multiple columns according to a specific string

HotTag

Archive