Quantcast

switch function

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

switch function

arnaud Gaboury
Dear group,

Here is my df :

trades <-
structure(list(Trade.Status = c("DEL", "INS", "INS"), Instrument.Long.Name =
c("SUGAR NO.11",
"CORN", "CORN"), Delivery.Prompt.Date = c("Jul/10", "Jul/10",
"Jul/10"), Buy.Sell..Cleared. = c("Sell", "Buy", "Buy"), Volume = c(1L,
2L, 1L), Price = c("15.2500", "368.0000", "368.5000"), Net.Charges..sum. =
c(4.01,
-8.64, -4.32)), .Names = c("Trade.Status", "Instrument.Long.Name",
"Delivery.Prompt.Date", "Buy.Sell..Cleared.", "Volume", "Price",
"Net.Charges..sum."), row.names = c(NA, 3L), class = "data.frame")

I want to replace "Buy" by "Sell" and "Sell" by "Buy" in column
"Buy.Sell..Cleared." when element in column "Trade.Status" is equal to
"DEL".

I think I can write something like this :


>tradesnew<-sapply(trades$Buy.Sell..Cleared[which(trades$Buy.Sell..Cleared==
"DEL"),],switch,.......)  but I don't really know how to pass further
arguments to the switch function.

Any help is appreciated.

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: switch function

jholtman
try this:

> toBuy <- trades$Trade.Status == "DEL" & trades$Buy.Sell..Cleared. == "Sell"
> toSell <- trades$Trade.Status == "DEL" & trades$Buy.Sell..Cleared. == "Buy"
> x <- trades  # make a copy to change
> x$Buy.Sell..Cleared.[toBuy] <- "Buy"
> x$Buy.Sell..Cleared.[toSell] <- "Sell"
> x
  Trade.Status Instrument.Long.Name Delivery.Prompt.Date
Buy.Sell..Cleared. Volume    Price Net.Charges..sum.
1          DEL          SUGAR NO.11               Jul/10
 Buy      1  15.2500              4.01
2          INS                 CORN               Jul/10
 Buy      2 368.0000             -8.64
3          INS                 CORN               Jul/10
 Buy      1 368.5000             -4.32
> trades
  Trade.Status Instrument.Long.Name Delivery.Prompt.Date
Buy.Sell..Cleared. Volume    Price Net.Charges..sum.
1          DEL          SUGAR NO.11               Jul/10
Sell      1  15.2500              4.01
2          INS                 CORN               Jul/10
 Buy      2 368.0000             -8.64
3          INS                 CORN               Jul/10
 Buy      1 368.5000             -4.32
>
>


On Thu, May 27, 2010 at 4:03 AM, arnaud Gaboury
<[hidden email]> wrote:

> Dear group,
>
> Here is my df :
>
> trades <-
> structure(list(Trade.Status = c("DEL", "INS", "INS"), Instrument.Long.Name =
> c("SUGAR NO.11",
> "CORN", "CORN"), Delivery.Prompt.Date = c("Jul/10", "Jul/10",
> "Jul/10"), Buy.Sell..Cleared. = c("Sell", "Buy", "Buy"), Volume = c(1L,
> 2L, 1L), Price = c("15.2500", "368.0000", "368.5000"), Net.Charges..sum. =
> c(4.01,
> -8.64, -4.32)), .Names = c("Trade.Status", "Instrument.Long.Name",
> "Delivery.Prompt.Date", "Buy.Sell..Cleared.", "Volume", "Price",
> "Net.Charges..sum."), row.names = c(NA, 3L), class = "data.frame")
>
> I want to replace "Buy" by "Sell" and "Sell" by "Buy" in column
> "Buy.Sell..Cleared." when element in column "Trade.Status" is equal to
> "DEL".
>
> I think I can write something like this :
>
>
>>tradesnew<-sapply(trades$Buy.Sell..Cleared[which(trades$Buy.Sell..Cleared==
> "DEL"),],switch,.......)  but I don't really know how to pass further
> arguments to the switch function.
>
> Any help is appreciated.
>
> ______________________________________________
> [hidden email] 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.
>



--
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: switch function

arnaud Gaboury
Thanks to Joris, this line does what I want :

trades$Buy.Sell..Cleared.[which(trades$Trade.Status=="DEL")] <-
  sapply(trades$Buy.Sell..Cleared.[which(trades$Trade.Status=="DEL")],
  switch,Sell="Buy",Buy="Sell")





> -----Original Message-----
> From: jim holtman [mailto:[hidden email]]
> Sent: Thursday, May 27, 2010 2:34 PM
> To: arnaud Gaboury
> Cc: [hidden email]
> Subject: Re: [R] switch function
>
> try this:
>
> > toBuy <- trades$Trade.Status == "DEL" & trades$Buy.Sell..Cleared. ==
> "Sell"
> > toSell <- trades$Trade.Status == "DEL" & trades$Buy.Sell..Cleared. ==
> "Buy"
> > x <- trades  # make a copy to change
> > x$Buy.Sell..Cleared.[toBuy] <- "Buy"
> > x$Buy.Sell..Cleared.[toSell] <- "Sell"
> > x
>   Trade.Status Instrument.Long.Name Delivery.Prompt.Date
> Buy.Sell..Cleared. Volume    Price Net.Charges..sum.
> 1          DEL          SUGAR NO.11               Jul/10
>  Buy      1  15.2500              4.01
> 2          INS                 CORN               Jul/10
>  Buy      2 368.0000             -8.64
> 3          INS                 CORN               Jul/10
>  Buy      1 368.5000             -4.32
> > trades
>   Trade.Status Instrument.Long.Name Delivery.Prompt.Date
> Buy.Sell..Cleared. Volume    Price Net.Charges..sum.
> 1          DEL          SUGAR NO.11               Jul/10
> Sell      1  15.2500              4.01
> 2          INS                 CORN               Jul/10
>  Buy      2 368.0000             -8.64
> 3          INS                 CORN               Jul/10
>  Buy      1 368.5000             -4.32
> >
> >
>
>
> On Thu, May 27, 2010 at 4:03 AM, arnaud Gaboury
> <[hidden email]> wrote:
> > Dear group,
> >
> > Here is my df :
> >
> > trades <-
> > structure(list(Trade.Status = c("DEL", "INS", "INS"),
> Instrument.Long.Name =
> > c("SUGAR NO.11",
> > "CORN", "CORN"), Delivery.Prompt.Date = c("Jul/10", "Jul/10",
> > "Jul/10"), Buy.Sell..Cleared. = c("Sell", "Buy", "Buy"), Volume =
> c(1L,
> > 2L, 1L), Price = c("15.2500", "368.0000", "368.5000"),
> Net.Charges..sum. =
> > c(4.01,
> > -8.64, -4.32)), .Names = c("Trade.Status", "Instrument.Long.Name",
> > "Delivery.Prompt.Date", "Buy.Sell..Cleared.", "Volume", "Price",
> > "Net.Charges..sum."), row.names = c(NA, 3L), class = "data.frame")
> >
> > I want to replace "Buy" by "Sell" and "Sell" by "Buy" in column
> > "Buy.Sell..Cleared." when element in column "Trade.Status" is equal
> to
> > "DEL".
> >
> > I think I can write something like this :
> >
> >
> >>tradesnew<-
> sapply(trades$Buy.Sell..Cleared[which(trades$Buy.Sell..Cleared==
> > "DEL"),],switch,.......)  but I don't really know how to pass further
> > arguments to the switch function.
> >
> > Any help is appreciated.
> >
> > ______________________________________________
> > [hidden email] 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.
> >
>
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem that you are trying to solve?

______________________________________________
[hidden email] 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.
Loading...