У меня есть столбец чисел от 1: 1000. Я хочу добавить метку «s» в начало каждого номера, чтобы общее количество символов в каждой ячейке оставалось неизменным. Например, «1» станет «s0001», «15» станет «s0015», «620» станет «s0620», а «1000» станет «s1000».Вложенные инструкции if else для добавления меток к значениям
Я попытался выполнить это с помощью вложенных операторов 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
. Есть предположения?
Спасибо!
Решение
Благодаря Joran! Если х прерывистые целые числа:
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 = ""))
+1 Многое, намного лучше. – joran
@joran Я знаю только потому, что мне приходилось спрашивать, когда делаешь то же самое давно! – Justin
Woah, хорошо! Спасибо, Джастин! – jslefche