【发布时间】:2013-01-02 18:18:56
【问题描述】:
我正在处理一个小时格式的数据库,例如:
HOUR ID
1 2
10 4
5 6
20 6
我想用 1 个字符在值中放置一个零,并将它们存储在一个名为 NHOUR 的新列中,例如:
NHOUR HOUR ID
01 1 2
10 10 4
05 5 6
20 20 6
直到现在我都在努力解决类似的问题(我遵循论坛中已经为 ifelse 提供的一些建议):
DB$NHOUR<-with(DB,ifelse(nchar(HOUR,type="chars")==1),sprintf("%02d",HOUR),as.numeric(HOUR))
但没有任何成功! R 总是报告“是”元素未指定,等等。
一如既往,感谢任何提示!
【问题讨论】:
-
这看起来你在做事,太复杂了。为什么不只是
sprintf("%02d",DB$HOUR)?该函数的重点是它用前导零填充到 2 个字符的长度。 -
sprintf和as.numeric不在ifelse调用中,因为它们需要在;它们前面有一个右括号。此外,您在ifelse中混合了返回类型,这将导致您可能没有预料到的类型提升。 -
最后,由于您在这里相对较新并且已经提出了一些问题,我认为指出当答案解决您的问题时,单击检查会很有帮助标记旁边。通过向未来的用户明确指出哪个答案解决了您的问题,这极大地提高了问题(和站点)的价值。但是,请始终记住,您没有义务接受答案;我们很感激,但它始终是您的选择。
标签: r