gpt4 book ai didi

r - 嵌套的 if else 语句将标签附加到值

转载 作者:行者123 更新时间:2023-12-02 08:48:53 24 4
gpt4 key购买 nike

我有一列从 1:1000 开始的数字。我想将标签“s”附加到每个数字的前面,以便每个单元格中的字符总数保持不变。例如,“1”会变成“s0001”,“15”会变成“s0015”,“620”会变成“s0620”,“1000”会变成“s1000”。

我曾尝试使用嵌套的 if else 语句来完成此操作,但我不断收到错误消息,指出条件的长度 > 1,并且只会使用第一个元素。

这是一个示例数据集和我正在使用的代码:

df=data.frame(code=seq(1:1000))
df$code=
if (df$code < 10) { df$code=paste("s000",df$code,sep="") } else
if (100 > df$code & df$code >= 10) { df$code=paste("s00",df$code,sep=="") } else
if (1000 > df$code & df$code >= 100) { df$code=paste("s0",df$code,sep="") } else
{ df$code=paste("s",df$code,sep="") }

我怀疑有一种更简单的方法可以不使用 if else 来做到这一点。有什么想法吗?

谢谢!


解决方案

感谢乔兰!如果 x 是非连续整数:

d=data.frame(x=sample(1:1000,500))
d$nc=nchar(d$x)
ddply(d,.(nc),transform,lab = paste("s",paste(rep("0",4-unique(nc)),collapse = ""),x,sep = ""))

最佳答案

sprintf 怎么样?

> sprintf('s%04d', c(1,10,100,1000))
[1] "s0001" "s0010" "s0100" "s1000"

关于r - 嵌套的 if else 语句将标签附加到值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com