【发布时间】:2017-11-21 02:20:40
【问题描述】:
我有一个关于数据操作的简单问题。给定以下数据集:
n = c("john","jane","tim","john","jimmy","tim","jane","john","jimmy")
s = c("2012-03-21","2013-02-12","2014-01-01","2012-05-21","2010-12-17","2012-01-21","2013-03-12","2013-08-21","2010-09-17")
df = data.frame(n,s)
n s
1 john 2012-03-21
2 jane 2013-02-12
3 tim 2014-01-01
4 john 2012-05-21
5 jimmy 2010-12-17
6 tim 2012-01-21
7 jane 2013-03-12
8 john 2013-08-21
9 jimmy 2010-09-17
我想创建第三列数据,其中我计算了每个人从他们最早的时间点开始的月数。它会如下所示:
n s output
1 john 2012-03-21 0
2 jane 2013-02-12 0
3 tim 2014-01-01 24
4 john 2012-05-21 2
5 jimmy 2010-12-17 3
6 tim 2012-01-21 0
7 jane 2013-03-12 1
8 john 2013-08-21 17
9 jimmy 2010-09-17 0
如您所见,以john为例,最早的时间点是2012-03-21,所以它计算的月数是从2012-03-21到2012-05-21,再到2013-08- 21 并将输出放在适当的行中。
我认为 dplyr 或 apply 函数会派上用场,但我发现我正在为不应该太困难的事情编写大量代码。
感谢您的帮助。
【问题讨论】:
-
为什么john的最后一点是73.5?
2013-08-21 - 2012-03-21不应该是 17 岁吗? -
很抱歉是手动计算这些并更改了一些日期以使其更易于查看,但一定忘记更改该输出。谢谢。
标签: r datetime dataset dplyr apply