为了清理一些杂乱的数据,我想开始使用管道 %>%
,但如果 gsub()
,我将无法使 R 代码正常工作不在管道的开头,应该发生在后期(注意:这个问题与正确导入无关,而是与数据清理有关)。
简单的例子:
df <- cbind.data.frame(A= c("2.187,78 ", "5.491,28 ", "7.000,32 "), B = c("A","B","C"))
A 列包含字符(在本例中为数字,但也可以是字符串)并且需要清理。
步骤是
df$D <- gsub("\\.","",df$A)
df$D <- str_trim(df$D)
df$D <- as.numeric(gsub(",", ".",df$D))
一个人很容易就能做到这一点
df$D <- gsub("\\.","",df$A) %>%
str_trim() %>%
as.numeric(gsub(",", ".")) %>%
问题是第二个 gsub,因为它要求输入 .... 实际上是前一行的结果。
拜托,有人能解释一下如何在管道中进一步使用 gsub() 之类的函数吗?
非常感谢!
系统:R 3.2.3,Windows
最佳答案
尝试这个:
library(stringr)
df$D <- df$A %>%
{ gsub("\\.","", .) } %>%
str_trim() %>%
{ as.numeric(gsub(",", ".", .)) }
使用管道,您的数据将作为 传递第一 下一个函数的参数,所以如果你想在其他地方使用它,你需要将下一行包裹在
{}
中并使用 .
作为数据“标记”。
关于R:在一个管道中组合几个 gsub() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39997273/