[R] Splitting the Elements of character vector
Dear R forum I have a data.frame df = data.frame(currency_type = c(EURO_o_n, EURO_o_n, EURO_1w, EURO_1w, USD_o_n, USD_o_n, USD_1w, USD_1w), rates = c(0.47, 0.475, 0.461, 0.464, 1.21, 1.19, 1.41, 1.43)) currency_type rates 1 EURO_o_n 0.470 2 EURO_o_n 0.475 3 EURO_1w 0.461 4 EURO_1w 0.464 5 USD_o_n 1.210 6 USD_o_n 1.190 7 USD_1w 1.410 8 USD_1w 1.430 I need to split the values appearing under currency_type to obtain following data.frame in the original order currency tenor rates EURO o_n 0.470 EURO o_n 0.475 EURO 1w 0.461 EURO 1w 0.464 USD o_n 1.210 USD o_n 1.190 USD 1w 1.410 USD 1w 1.430 Basically I need to split the currency name and tenors. I tried strsplit(df$currency_type, _) Error in strsplit(df$currency_type, _) : non-character argument Kindly guide Katherine [[alternative HTML version deleted]] __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Splitting the Elements of character vector
On Tue, Apr 16, 2013 at 8:38 AM, Katherine Gobin katherine_go...@yahoo.com wrote: Dear R forum I have a data.frame df = data.frame(currency_type = c(EURO_o_n, EURO_o_n, EURO_1w, EURO_1w, USD_o_n, USD_o_n, USD_1w, USD_1w), rates = c(0.47, 0.475, 0.461, 0.464, 1.21, 1.19, 1.41, 1.43)) currency_type rates 1 EURO_o_n 0.470 2 EURO_o_n 0.475 3 EURO_1w 0.461 4 EURO_1w 0.464 5 USD_o_n1.210 6 USD_o_n1.190 7USD_1w1.410 8USD_1w1.430 I need to split the values appearing under currency_type to obtain following data.frame in the original order currency tenor rates EURO o_n 0.470 EURO o_n 0.475 EURO 1w 0.461 EURO 1w 0.464 USD o_n 1.210 USD o_n 1.190 USD 1w 1.410 USD 1w 1.430 Basically I need to split the currency name and tenors. Try sub: with(df, data.frame( currency = sub(_.*, , currency_type), tenor = sub(^[^_]*_, , currency_type), rates) ) -- Statistics Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Splitting the Elements of character vector
Hi, Try: df = data.frame(currency_type = c(EURO_o_n, EURO_o_n, EURO_1w, EURO_1w, USD_o_n, USD_o_n, USD_1w, USD_1w), rates = c(0.47, 0.475, 0.461, 0.464, 1.21, 1.19, 1.41, 1.43),stringsAsFactors=FALSE) df$currency-unlist(lapply(str_split(df[,1],_),`[`,1)) df$tenor-unlist(lapply(str_split(df[,1],_),function(x) {paste(x[-1],collapse=_)})) df[,c(3,4,2)] # currency tenor rates #1 EURO o_n 0.470 #2 EURO o_n 0.475 #3 EURO 1w 0.461 #4 EURO 1w 0.464 #5 USD o_n 1.210 #6 USD o_n 1.190 #7 USD 1w 1.410 #8 USD 1w 1.430 A.K. - Original Message - From: Katherine Gobin katherine_go...@yahoo.com To: r-help@r-project.org Cc: Sent: Tuesday, April 16, 2013 8:38 AM Subject: [R] Splitting the Elements of character vector Dear R forum I have a data.frame df = data.frame(currency_type = c(EURO_o_n, EURO_o_n, EURO_1w, EURO_1w, USD_o_n, USD_o_n, USD_1w, USD_1w), rates = c(0.47, 0.475, 0.461, 0.464, 1.21, 1.19, 1.41, 1.43)) currency_type rates 1 EURO_o_n 0.470 2 EURO_o_n 0.475 3 EURO_1w 0.461 4 EURO_1w 0.464 5 USD_o_n 1.210 6 USD_o_n 1.190 7 USD_1w 1.410 8 USD_1w 1.430 I need to split the values appearing under currency_type to obtain following data.frame in the original order currency tenor rates EURO o_n 0.470 EURO o_n 0.475 EURO 1w 0.461 EURO 1w 0.464 USD o_n 1.210 USD o_n 1.190 USD 1w 1.410 USD 1w 1.430 Basically I need to split the currency name and tenors. I tried strsplit(df$currency_type, _) Error in strsplit(df$currency_type, _) : non-character argument Kindly guide Katherine [[alternative HTML version deleted]] __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Splitting the Elements of character vector
HI, You can also do this by: library(stringr) df2-data.frame(currency=word(str_replace(df[,1],_, ),1), temor=word(str_replace(df[,1],_, ),2), rates=df$rates,stringsAsFactors=FALSE) df2 # currency temor rates #1 EURO o_n 0.470 #2 EURO o_n 0.475 #3 EURO 1w 0.461 #4 EURO 1w 0.464 #5 USD o_n 1.210 #6 USD o_n 1.190 #7 USD 1w 1.410 #8 USD 1w 1.430 A.K. - Original Message - From: arun smartpink...@yahoo.com To: Katherine Gobin katherine_go...@yahoo.com Cc: R help r-help@r-project.org Sent: Tuesday, April 16, 2013 9:00 AM Subject: Re: [R] Splitting the Elements of character vector Hi, Try: df = data.frame(currency_type = c(EURO_o_n, EURO_o_n, EURO_1w, EURO_1w, USD_o_n, USD_o_n, USD_1w, USD_1w), rates = c(0.47, 0.475, 0.461, 0.464, 1.21, 1.19, 1.41, 1.43),stringsAsFactors=FALSE) df$currency-unlist(lapply(str_split(df[,1],_),`[`,1)) df$tenor-unlist(lapply(str_split(df[,1],_),function(x) {paste(x[-1],collapse=_)})) df[,c(3,4,2)] # currency tenor rates #1 EURO o_n 0.470 #2 EURO o_n 0.475 #3 EURO 1w 0.461 #4 EURO 1w 0.464 #5 USD o_n 1.210 #6 USD o_n 1.190 #7 USD 1w 1.410 #8 USD 1w 1.430 A.K. - Original Message - From: Katherine Gobin katherine_go...@yahoo.com To: r-help@r-project.org Cc: Sent: Tuesday, April 16, 2013 8:38 AM Subject: [R] Splitting the Elements of character vector Dear R forum I have a data.frame df = data.frame(currency_type = c(EURO_o_n, EURO_o_n, EURO_1w, EURO_1w, USD_o_n, USD_o_n, USD_1w, USD_1w), rates = c(0.47, 0.475, 0.461, 0.464, 1.21, 1.19, 1.41, 1.43)) currency_type rates 1 EURO_o_n 0.470 2 EURO_o_n 0.475 3 EURO_1w 0.461 4 EURO_1w 0.464 5 USD_o_n 1.210 6 USD_o_n 1.190 7 USD_1w 1.410 8 USD_1w 1.430 I need to split the values appearing under currency_type to obtain following data.frame in the original order currency tenor rates EURO o_n 0.470 EURO o_n 0.475 EURO 1w 0.461 EURO 1w 0.464 USD o_n 1.210 USD o_n 1.190 USD 1w 1.410 USD 1w 1.430 Basically I need to split the currency name and tenors. I tried strsplit(df$currency_type, _) Error in strsplit(df$currency_type, _) : non-character argument Kindly guide Katherine [[alternative HTML version deleted]] __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.