我需要根据另一列中的日期范围创建一列 范例: 我需要根据列“日期”创建一个列“拆分”,如下数据所示。 前5天为1,接下来的5天为2,依此类推。
我无法使用if else条件来创建新列,因为日期范围涵盖了将近10年
Date ID split
1/1/2017 ABC 1
1/2/2017 ABC 1
1/3/2017 ABC 1
1/4/2017 ABC 1
1/5/2017 ABC 1
1/6/2017 ABC 2
1/7/2017 ABC 2
1/8/2017 ABC 2
1/9/2017 ABC 2
1/10/2017 ABC 2
1/1/2017 xyz 1
1/2/2017 xyz 1
1/3/2017 xyz 1
1/4/2017 xyz 1
1/5/2017 xyz 1
1/11/2017 EFG 3
1/12/2017 EFG 3
1/13/2017 EFG 3
1/14/2017 EFG 3
1/15/2017 EFG 3
答案 0 :(得分:0)
为阐明我们对所需内容的理解,我们假设计算中不涉及ID
列,我们只希望将1分配给最低的5个唯一日期,将2分配给接下来的5个唯一日期等等。在问题中,介于最大值和最小值之间的每个日期至少出现一次,因此我们假设是这种情况。根据显示的数据,我们希望将1分配给2017年1月的前5个日历日,将2分配给2017年1月的下5个日历日,并将3分配给2017年1月的下5个日历日。
我们可以将split
计算为自第一天起的天数,然后将其除以5并取整数部分并加1。
不使用任何软件包。
d <- as.Date(DF$Date, format = "%m/%d/%Y")
transform(DF, split = as.numeric(d - min(d)) %/% 5 + 1)
给予:
Date ID split
1 1/1/2017 ABC 1
2 1/2/2017 ABC 1
3 1/3/2017 ABC 1
4 1/4/2017 ABC 1
5 1/5/2017 ABC 1
6 1/6/2017 ABC 2
7 1/7/2017 ABC 2
8 1/8/2017 ABC 2
9 1/9/2017 ABC 2
10 1/10/2017 ABC 2
11 1/1/2017 xyz 1
12 1/2/2017 xyz 1
13 1/3/2017 xyz 1
14 1/4/2017 xyz 1
15 1/5/2017 xyz 1
16 1/11/2017 EFG 3
17 1/12/2017 EFG 3
18 1/13/2017 EFG 3
19 1/14/2017 EFG 3
20 1/15/2017 EFG 3
我们假设以下数据具有可重复形式:
Lines <- "Date ID
1/1/2017 ABC
1/2/2017 ABC
1/3/2017 ABC
1/4/2017 ABC
1/5/2017 ABC
1/6/2017 ABC
1/7/2017 ABC
1/8/2017 ABC
1/9/2017 ABC
1/10/2017 ABC
1/1/2017 xyz
1/2/2017 xyz
1/3/2017 xyz
1/4/2017 xyz
1/5/2017 xyz
1/11/2017 EFG
1/12/2017 EFG
1/13/2017 EFG
1/14/2017 EFG
1/15/2017 EFG"
DF <- read.table(text = Lines, header = TRUE, as.is = TRUE, strip.white = TRUE)