- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我会尝试通过样本数据来解释我的问题
ID Region Start_Date End_Date
1 Reg1 27/1/2017 27/1/2017
2 Reg1 27/2/2017 05/3/2017
1 Reg1 24/3/2017 25/5/2017
现在我希望结果是这样的:
ID Region n_Start_Date n_End_Date
1 Reg1 27/1/2017 27/1/2017
2 Reg2 27/2/2017 28/2/2017
2 Reg2 01/3/2017 05/3/2017
1 Reg1 24/3/2017 31/3/2017
1 Reg1 01/4/2017 30/4/2017
1 Reg1 01/5/2017 31/5/2017
我正在考虑实现的当前方法:
我创建了一个数据框,其中包含 2017 年和 2018 年每个月的开始日期和结束日期的 14 条记录,例如:
Year Month Start of Month End of Month
2017 1 1/1/2017 31/1/2017
2017 2 1/2/2017 28/2/2017
2017 3 1/3/2017 31/3/2017
2017 4 1/4/2017 30/4/2017
2017 5 1/5/2017 31/5/2017
2017 6 1/6/2017 30/6/2017
2017 7 1/7/2017 31/7/2017
2017 8 1/8/2017 31/8/2017
2017 9 1/9/2017 30/9/2017
2017 10 1/10/2017 31/10/2017
2017 11 1/11/2017 30/11/2017
2017 12 1/12/2017 31/12/2017
2018 1 2/12/2017 31/1/2018
2018 2 3/12/2017 28/2/2018
我为年份和月份创建了一个新列:
如果开始日期年、月与结束日期年、月相同,那么下一个相同的开始和结束日期将被复制到新数据框,如
ID Region Start_Date End_Date n_Start_Date n_End_Date
1 Reg1 27/1/2017 27/1/2017 27/1/2017 27/1/2017
如果开始日期年份、月份不相同则追加
ID Region Start_Date End_Date n_Start_Date n_End_Date
2 Reg2 27/2/2017 05/3/2017 27/2/2017 28/2/2017
2 Reg2 27/2/2017 05/3/2017 01/3/2017 05/3/2017
我找不到任何类似的问题,我已经完成了这个 link , 但没有用。
如果有任何更好的方法请告诉我。
最佳答案
我想我已经明白你想要什么了,如果你有一个结束日期不在同一年和同一月的日期,你会生成一个新行,直到它出现为止。生成的行应在该月的后一天开始并在该月底结束。
# packages we need
library(tidyverse)
library(lubridate)
test_data <- tribble(
~ID, ~Region, ~Start_Date, ~End_Date,
1L, "Reg1", "27/1/2017", "27/1/2017",
2L, "Reg2", "27/2/2017", "05/3/2017",
1L, "Reg1", "24/3/2017", "25/5/2017"
) %>% mutate_at(vars(Start_Date, End_Date), dmy)
如果我们让一个函数在给定任何开始和结束的情况下执行您想要的操作,我们就可以在之后轻松应用它。
expand_dates <- function(start, end) {
# the number of entries we want to add
to_add <- month(end) - month(start)
# Take the start date, roll it forwards until the month is equal to the end month
start_dates <- start + months(0:to_add)
# everything but the first start_date is rolled back to first of month
start_dates <- c(start_dates[1],
rollback(start_dates[-1], roll_to_first = T))
# end dates are just the start_dates rolled forwards to the end of the month
# apply to all but last, thats the end date
end_dates <- c(rollback(ceiling_date(start_dates[-length(start_dates)], unit = "months")), end)
data.frame(start_dates = start_dates,
end_dates = end_dates)
}
我们可以只使用 purrr
中的 map2
,这使我们能够遍历开始日期和结束日期。我们使用 mutate
添加了一个列表列。列表列中的每个元素都是一个 data.frame,它是我们新函数的输出。我们将使用 unnest
然后将我们的数据扩展到所需的内容。
test_data %>%
mutate(test = map2(Start_Date, End_Date, expand_dates)) %>%
unnest()
# A tibble: 6 x 6
ID Region Start_Date End_Date start_dates end_dates
<int> <chr> <date> <date> <date> <date>
1 1 Reg1 2017-01-27 2017-01-27 2017-01-27 2017-01-27
2 2 Reg2 2017-02-27 2017-03-05 2017-02-27 2017-02-28
3 2 Reg2 2017-02-27 2017-03-05 2017-03-01 2017-03-05
4 1 Reg1 2017-03-24 2017-05-25 2017-03-24 2017-03-31
5 1 Reg1 2017-03-24 2017-05-25 2017-04-01 2017-04-30
6 1 Reg1 2017-03-24 2017-05-25 2017-05-01 2017-05-25
关于r - 如何根据开始和结束日期将一条记录拆分为多条记录R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48799282/
我有一个数组列表: ArrayList allText = new ArrayList(); 其内容是这样的: [Alabama - Montgomery, Alaska - Juneau, Ariz
我有一个 timestamp 格式的开始和结束时间。我想将它们分成多个时间段,例如 1 小时。 $t1 = strtotime('2010-05-06 12:00:00'); $t2 = strtot
我需要将 span10 分成 3 列,但我无法将它们排列起来。我应该在 span10 中添加一个 span12 还是使用 offset 还是??
我有一个时间序列。我想从早上 8 点到第二天早上 7:59 分成 24 小时的区 block 。我知道如何按日期分组,但我尝试过使用 TimeGroupers 和 DateOffsets 处理这个 8
我收到“街道号码邮政编码城市”形式的地址(作为字符串)。我想要做的是将街道和号码与邮政编码和城市分开。通常你可以按空格分割。但有些街道名称中也有空格,例如:“Emile Van Ermengemlaa
我有一个用户列表。其中一些用户处于第一状态,而其他用户处于第二状态。所以我想要的是将这个列表显示为首先,它按排序顺序显示存在 = 1 的用户,然后按排序顺序显示存在 = 2 的用户。这里的排序是根据用
我感觉我搜索了整个网络,但找不到一种方法将不同高度的 div 很好地划分为 3 列,就像 http://www.ing.nl 上那样 headertekst headerteksttesth
Bootstrap 3 按钮下拉菜单出现问题。你可以在这里看到我的两个例子: http://www.bootply.com/W1dLusilMk http://www.bootply.com/GGBv
我在 php 中执行以下操作 foreach($QuestionAsekd as $k => $v){ $grp_name = $v['NAME']; $groupValues[$gr
我找到了一种用pandas解析html的绝妙方法。我的数据格式有点奇怪(见下文)。我想将这些数据拆分为 2 个单独的数据帧。 注意每个单元格如何由,分隔...是否有任何真正有效的方法来分割所有这些单元
HTML 看起来像这样,但我不允许对其进行更改。我只能编写 CSS 将其变成 2 列。 Povezave www.behance.net www.kiberpipa.org www.o
假设我有以下数据框“A” utilization utilization_billable service 1
我需要将 2 个文本框拉伸(stretch)到 100% 的浏览器宽度,以及一个提交按钮。所有三个都应该在一行中,我试图拉伸(stretch)它但它没有发生......有什么想法吗? 代码: .sea
我是一名优秀的程序员,十分优秀!