将字符串附加到某些行

Append string to some rows

在我的数据框中,我的一列(class character)的条目长度为 5 或 9 个字符。我想取那些长度为 5 个字符的,并在后面附加 4 个零,使它们长度为 9 个字符。 (EG在12345000012345

我尝试使用 sqldf 和以下代码来做到这一点:

mydf<-sqldf("UPDATE mydf SET column = column + '0000' WHERE LENGTH(column) < 6")

但由于某种原因,它将 mydf 变成了 null 值,我认为问题在于串联。

也试过 concat(),但我得到:

Error in sqliteSendQuery(con, statement, bind.data) : error in statement: no such function: concat`.

注意:答案不一定要使用 sqldf,我只是给出了一种我尝试过的方法。

您可以简单地尝试 ifelse

mydf$column=ifelse(nchar(mydf$column)<6,paste0(mydf$column,'0000'),mydf$column)‌​

而不是更新使用 select 语句。

sqldf("select *, column||'0000' from mydf where length(column)<6")

sqldf 不更新 R 对象,我们需要 return 来自 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