Dplyr函数,它将列作为参数并执行多个管道步骤

时间:2017-12-14 15:56:17

标签: r dplyr stringr

我在dplyr中有重复代码来清理数据。

df1_final$sumaryczna_kwota_zobowiązań  <-
  df1_final$sumaryczna_kwota_zobowiązań %>% 
  str_replace(",", ".") %>%  str_replace_all("\\s", "")%>% as.numeric() 

df3_final$sumaryczna_liczba_kontraktu_dla_produktu  <-
  df3_final$sumaryczna_liczba_kontraktu_dla_produktu %>% 
  str_replace(",", ".") %>%  str_replace_all("\\s", "")%>% as.numeric() 

df3_final$sumaryczna_kwota_kontraktu_dla_produktu  <-
  df3_final$sumaryczna_kwota_kontraktu_dla_produktu %>%
  str_replace(",", ".") %>%  str_replace_all("\\s", "") %>% as.numeric() 

df3_final$średnia_cena_produktu  <-
  df3_final$średnia_cena_produktu %>%
  str_replace(",", ".") %>%  str_replace_all("\\s", "") %>% as.numeric() 

一个df中的一列,另一个df中的三列,但过程是相同的。

如何将其转换为一个函数,在数据框中使用一个或更好的几列并清理数据,而不重复代码?

TO MODERATOR,EXPLANATION:我的问题是独特的,因为它要求在几个列上进行多次管道操作。评论中的答案值得推广。从他们那里我学到了语法:

myfun = . %>% str_replace(",", ".") %>% str_replace_all("\\s", "")%>% as.number() 

# and then use it on columns name "a" and "b"

df %<>% mutate_at(c("a","b"), .funs=myfun)

0 个答案:

没有答案