【发布时间】:2020-06-23 01:49:55
【问题描述】:
我的真实数据框有超过 90000 行和 30 个Ptt
然后,我有一个这样的数据框:
Ptt Date Area
88734 2016-10-23 05:39:18 BA
88734 2016-10-23 06:53:13 BA
88734 2016-11-09 08:32:18 MI
88734 2016-11-19 06:45:27 MI
88734 2016-12-20 12:30:43 MI
88734 2016-12-29 02:45:35 FA
129041 2017-10-05 04:55:24 BA
129041 2016-10-23 06:45:30 MI
129041 2016-11-16 07:10:32 FA
129041 2016-11-29 03:43:54 FA
120941 2017-01-02 14:54:39 FA
dt = data.table(Ptt= c("88734", "88734", "88734", "88734", "88734", "88734", "120941", "120941","120941","120941","120941"),
date = c("2016-10-23 05:39:18",
"2016-10-23 06:53:13 ",
"2016-11-09 08:32:18",
"2016-11-19 06:45:27",
"2016-12-20 12:30:43",
"2016-12-29 02:45:35",
"2017-10-05 04:55:24",
"2016-10-23 06:45:30",
"2016-11-16 07:10:32",
"2016-11-29 03:43:54",
"2017-01-02 14:54:39"),
Area = c("BA", "BA", "MI", "MI", "MI", "FA", "BA", "MI", "FA", "FA", "FA"))
我想要两件事。首先,计算每个Ptt 在每个area 上的天数。其次,每个area 有多少天,但我不知道该怎么做,有人知道吗?
关于第一个,例如:88734 在BA 有1 天,在MI 有3 天,在FA 有1 天,以此类推。
另一个例子(不是真实的):我有 2 天重复 88734、2016-10-23、2016-10-23,然后是 2016-11-09、2016-11-09、2016-11-09(此处重复 3 天),然后2016-12-29(这里 1 天)。所以,这个88734 总共计算了 3 天,而不是 6 天。
关于第二个,即使对于许多 Ptt 有相同的 date,我需要对所有时间求和,我猜是这样的,在 BA 处为 88734 求和所有天数,然后为 @ 求和所有天数987654342@,然后放在一起。 (不知道是不是正确的推理)
例如(不是真实的),88734 有 10/08/2017、10/08/2017 BA,但 129041 有 10/08/2017、10/08/2017、10/08 /2017 也在BA。所以,请在BA 度过 2 天,而不是 1 天。
我想要这个:(可能是 2 个新闻数据框)
#First one
Ptt Area Days
88734 BA 1
88734 MI 3
88734 FA 1
129041 BA 1
129041 MI 1
120941 FA 3
#Second one
Area Days
BA 2
MI 4
FA 4
谢谢!
【问题讨论】:
标签: r conditional-statements counting days