Sapana Lohani <lohani.sapana@ymail.com> wrote on 08/16/2012 01:41:23 PM:
> 
> Hi, 
> 
> I have a table in which one column has the name of the objects as shown 
below.


You don't provide example data, so I'm not sure what you mean by a 
"table".  I will assume that you mean a data frame.


> Name 
> 
> Budlamp-Woodcutter Complex - 15 to 60% slope (60/25/15) 
> Budlamp-Woodcutter Complex - 15 to 60% slope (60/25/15) 
> Terrarossa-Blacktail-Pyeatt Complex - 1 to 40% slope (40/35/15/10) 
> Terrarossa-Blacktail-Pyeatt Complex - 1 to 40% slope (40/35/15/10) 
> 
> How can I split the single column into three columns like name 
> (Budlamp-Woodcutter Complex), slope (15 to 60% slope) and 
percentage(60/25/15)
> 
> thanks


# example data frame
mydat <- data.frame(Name = c("Budlamp-Woodcutter Complex - 15 to 60% slope 
(60/25/15)", 
        "Budlamp-Woodcutter Complex - 15 to 60% slope (60/25/15)", 
        "Terrarossa-Blacktail-Pyeatt Complex - 1 to 40% slope 
(40/35/15/10)", 
        "Terrarossa-Blacktail-Pyeatt Complex - 1 to 40% slope 
(40/35/15/10)"), x=1:4)

# find where the three splitting strings are
dash <- regexpr(" - ", mydat$Name)
leftp <- regexpr(" \\(", mydat$Name)
rightp <- regexpr("\\)", mydat$Name)

# define three new columns based on the location of the splitting strings
mydat$name <- substring(mydat$Name, 1, dash-1)
mydat$slope <- substring(mydat$Name, dash + attr(dash, "match.length"), 
leftp-1)
mydat$percentage <- substring(mydat$Name, leftp + attr(leftp, 
"match.length"), rightp-1)

mydat


	[[alternative HTML version deleted]]

