首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串附加到某些行

将字符串附加到某些行
EN

Stack Overflow用户
提问于 2016-01-25 11:40:44
回答 3查看 429关注 0票数 1

在我的dataframe中,我的一个列(属于character类)有5个或9个字符长的条目。我想拿那些谁是5个字符长,并附加4个零后,使他们9个字符长。(如转12345 in 123450000)

我尝试使用sqldf和下面的代码来完成它:

代码语言:javascript
复制
mydf<-sqldf("UPDATE mydf SET column = column + '0000' WHERE LENGTH(column) < 6")

但出于某种原因,它将mydf转换为null值,我认为问题在于连接。

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

sqliteSendQuery中的错误(con,语句,bind.data):语句中的错误:没有这样的函数:串联。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-25 12:09:06

您可以简单地尝试ifelse

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

票数 1
EN

Stack Overflow用户

发布于 2016-01-25 13:58:19

sqldf不更新R对象,我们需要在更新后从sql环境返回结果,请参见下面的示例:

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2016-01-25 12:58:30

而不是更新,使用select语句。

代码语言:javascript
复制
sqldf("select *, column||'0000' from mydf where length(column)<6")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34991718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档