我的数据如下:
year group date
2019 A 2019-07-15
2019 A 2019-07-25
2019 A 2019-08-01
2019 B 2019-07-15
2019 B 2019-07-30
2020 A 2020-08-01
2020 A 2020-08-03
2020 B 2020-08-01
2020 B 2020-08-20
2020 B 2020-08-25
我想计算每个组每年日期之间的平均天数。我尝试了以下代码,但收到以下错误:
data_meandays <- data %>%
group_by(year, group)%>%
mutate(Difference = date - lag(date)) %>%
summarize(mean_time = mean(Difference, na.rm=TRUE))
Error in date - lag(date) :
non-numeric argument to binary operator
我的日期列的类别是日期。
发生错误,因为date
列是字符
,而不是date
类。我们需要先转换为<code>Date</code>类,然后再进行差异处理
library(dplyr)
data %>%
mutate(date = as.Date(date)) %>%
group_by(year, group) %>%
mutate(Difference = date - lag(date)) %>%
summarize(mean_time = mean(Difference, na.rm=TRUE), .groups = 'drop')
-输出,输出
# A tibble: 4 × 3
year group mean_time
<int> <chr> <drtn>
1 2019 A 8.5 days
2 2019 B 15.0 days
3 2020 A 2.0 days
4 2020 B 12.0 days
注意:日期
s 之间的差异的输出是 difftime
对象。如果我们想转换为数字
类,它将是应用于列的 as.numeric
如果我们不转换到< code>Date类,则OP的错误会重现
data %>%
group_by(year, group)%>%
mutate(Difference = date - lag(date)) %>%
summarize(mean_time = mean(Difference, na.rm=TRUE))
突变 ()
中的错误: !计算时出现问题 差异 = 日期 - 滞后(日期)。
i 错误发生在组 1:年份 = 2019,组 = “A”。由日期错误导致 - 滞后(日期)
:!二进制运算符的非数字参数 运行 rlang::last_error()
以查看错误发生的位置
data <- structure(list(year = c(2019L, 2019L, 2019L, 2019L, 2019L, 2020L,
2020L, 2020L, 2020L, 2020L), group = c("A", "A", "A", "B", "B",
"A", "A", "B", "B", "B"), date = c("2019-07-15", "2019-07-25",
"2019-08-01", "2019-07-15", "2019-07-30", "2020-08-01", "2020-08-03",
"2020-08-01", "2020-08-20", "2020-08-25")),
class = "data.frame", row.names = c(NA,
-10L))
问题内容: 在我的代码中,日期之间的差异是错误的,因为它应该是38天而不是8天。我该如何解决? 问题答案: 问题出在变量中。月以Capital M表示。 尝试更改为: 有关更多信息,请参见此javadoc。 编辑: 这是代码,如果您想以注释的方式打印差异: 希望对您有所帮助!
我怀疑 R 有一个内置方法来做到这一点,但我是编程新手,并试图弄清楚如何手动计算日期之间的天数作为练习。这是我的代码: 我写了一个代码来确定两个日期之间的天数,使用python。我现在正在尝试将其转换为 R 以用于我正在做的另一个作业。当我运行每个单独的功能时,它们似乎工作正常。当我调用daysBetweenDates(2012,1,时,出现以下错误: 第1天出错:二进制运算符的非数字参数
问题内容: 在我的数据库中,我有一个包含两列的表。第一列包含日期,第二列是计数变量。我想知道是否有可能根据日期和计数来计算每个工作日的平均计数。在下面的一个小例子中: 桌子: 输出: 问题答案: 您可以对表达式进行一系列调用以提取当天的名称: 编辑: 鉴于编辑后的帖子中已更新了预期的输出,因此操作起来容易得多-只需按:分组即可:
问题内容: 我编写了以下代码来查找两个日期之间的日期 当开始日期和结束日期分别是2/3/2017和3/3/2017时,显示的天数是29.尽管它们是同一天,但显示的是1.(请假的天数。如果请假一天,他必须选择相同的开始日期和结束日期。因此,在这种情况下,他请了两天假。 我究竟做错了什么?感谢您的时间。 注意:请不要使用日期构造函数。检查下面接受的答案。使用simpledateformat或Joda时
我写了以下代码来查找两个日期之间的日期 当开始日期和结束日期分别为2017年2月3日和2017年3月3日时,显示的天数为29天。虽然当他们在同一天,它是显示1。(一个人休假的天数。因此,如果一个人休假一天,他必须选择相同的开始和结束日期。因此,在这种情况下,他休假两天)。 我做错了什么?谢谢你抽出时间。 注意:请不要使用日期构造函数。检查下面被接受的答案。使用simpledateformat或Jo
问题内容: 我正在计算从“开始”到“结束”日期之间的天数。例如,如果起始日期为2010年4月13日,起始日期为2010年5月15日,则结果应为 如何使用JavaScript获得结果? 问题答案: