Alternative to loop ifelse() for vector data

后端 未结 2 1740
后悔当初
后悔当初 2021-01-22 12:56

I have a price dataframe dat and a second dataframe with currencies cur. What i want to do is to transform every non-EUR price in dat into

2条回答
  •  抹茶落季
    2021-01-22 13:16

    I think this would be much easier as a merge/join operation. Using tidy verse you can do

    library(tidyverse)
    dat <- read_table("Nation   Price
    AT       10
    AT       12
    BE       15
    BG       30
    BG       40
    CZ       200")
    cur <- read_table("Nation Rate
    BG     0.51
    CZ     0.03918")
    
    
    dat %>% left_join(cur) %>% 
      mutate(Rate=coalesce(Rate, 1)) %>%
      mutate(EPrice = Price * Rate)
    

    The only trick here is to change the Rate for those nations not in the cur table to 1.

提交回复
热议问题