在我的dataframe中,我的一个列(属于character类)有5个或9个字符长的条目。我想拿那些谁是5个字符长,并附加4个零后,使他们9个字符长。(如转12345 in 123450000)
我尝试使用sqldf和下面的代码来完成它:
mydf<-sqldf("UPDATE mydf SET column = column + '0000' WHERE LENGTH(column) < 6")但出于某种原因,它将mydf转换为null值,我认为问题在于连接。
也尝试过concat(),但我得到:
sqliteSendQuery中的错误(con,语句,bind.data):语句中的错误:没有这样的函数:串联。
NB:答案不一定要使用sqldf,我只是给出了一种我尝试过的方法。
发布于 2016-01-25 12:09:06
您可以简单地尝试ifelse
mydf$column=ifelse(nchar(mydf$column)<6,paste0(mydf$column,'0000'),mydf$column)
发布于 2016-01-25 13:58:19
sqldf不更新R对象,我们需要在更新后从sql环境返回结果,请参见下面的示例:
library(sqldf)
#dummy data
mydf <- data.frame(column=c("1","100","12345","1234567"))
#update and return the result
mydf1 <- sqldf(c("UPDATE mydf
SET column = column || '0000'
WHERE LENGTH(column) < 6",
"SELECT *
FROM main.mydf"))
#output
mydf1
# column
# 1 10000
# 2 1000000
# 3 123450000
# 4 1234567发布于 2016-01-25 12:58:30
而不是更新,使用select语句。
sqldf("select *, column||'0000' from mydf where length(column)<6")https://stackoverflow.com/questions/34991718
复制相似问题