【发布时间】:2017-02-21 04:15:00
【问题描述】:
为了清理一些杂乱的数据,我想开始使用管道%>%,但是如果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
【问题讨论】:
-
提及你正在使用的外部包。
-
虽然没有 gsub 你可以使用
df$D <- gsub("\\.","",df$A) %>% str_trim() %>% str_replace(',', '.') -
您实际上并不需要修剪空白以使
as.numeric工作。 -
外部包:dplyr,magrittr,stringr。感谢您对 str_replace(',', '.') 和 whitespace & as.numeric 的建议