R 从复杂日期格式识别周数
对于数据框中的日期,我有一个非常烦人的格式。以下是一个示例:R 从复杂日期格式识别周数,r,datetime,format,R,Datetime,Format,对于数据框中的日期,我有一个非常烦人的格式。以下是一个示例: "Jan 1, 2020, 8:36:55 PM" "Jan 7, 2020, 12:00:00 PM" "Jan 9, 2020, 8:24:55 PM" 我要做的第一件事就是按年过滤。我最后只使用了grep(),因为没有出现2020的其他上下文,但这不是一个优雅的解决方案。我希望我目前问题的答案也能对此有所帮助 不管怎样,我现在想确定几周。我想每周计算不同列的每个单
"Jan 1, 2020, 8:36:55 PM" "Jan 7, 2020, 12:00:00 PM" "Jan 9, 2020, 8:24:55 PM"
我要做的第一件事就是按年过滤。我最后只使用了grep()
,因为没有出现2020的其他上下文,但这不是一个优雅的解决方案。我希望我目前问题的答案也能对此有所帮助
不管怎样,我现在想确定几周。我想每周计算不同列的每个单元格的总和。然而,我甚至不知道如何将字符串转换成某种日期
给你一个我的数据样本,它是这样的(已经在2020年过滤):
编辑:我还需要在第三列中求和的行数,如果可能的话…您可以使用
as.POSIXct
x <- c("Jan 1, 2020, 8:36:55 PM", "Jan 7, 2020, 12:00:00 PM", "Jan 9, 2020, 8:24:55 PM")
as.POSIXct(x, format = '%b %d, %Y, %I:%M:%S %p', tz = 'UTC')
#[1] "2020-01-01 20:36:55 UTC" "2020-01-07 12:00:00 UTC" "2020-01-09 20:24:55 UTC"
一旦这样做,您就可以提取每周的信息和
sum
Moving.Time
library(dplyr)
library(lubridate)
df %>%
mutate(Activity.Date = mdy_hms(Activity.Date)) %>%
group_by(Week = week(Activity.Date )) %>%
summarise(Moving.Time = sum(Moving.Time))
您可以将
用作.POSIXct
x <- c("Jan 1, 2020, 8:36:55 PM", "Jan 7, 2020, 12:00:00 PM", "Jan 9, 2020, 8:24:55 PM")
as.POSIXct(x, format = '%b %d, %Y, %I:%M:%S %p', tz = 'UTC')
#[1] "2020-01-01 20:36:55 UTC" "2020-01-07 12:00:00 UTC" "2020-01-09 20:24:55 UTC"
一旦这样做,您就可以提取每周的信息和
sum
Moving.Time
library(dplyr)
library(lubridate)
df %>%
mutate(Activity.Date = mdy_hms(Activity.Date)) %>%
group_by(Week = week(Activity.Date )) %>%
summarise(Moving.Time = sum(Moving.Time))
使用以下命令将activity.date列转换为日期/时间对象:
activitydate <-as.POSIXct("Jan 1, 2020, 8:36:55 PM", format="%b %d, %Y, %r")
有关更多信息,请参阅strtime
的帮助
更新要回答关于提供行数的第二个问题,可以使用dplyr库轻松完成
df$Activity.Date <- as.POSIXct(df$Activity.Date, format="%b %d, %Y, %r")
df$week <- format(df$Activity.Date, "%V")
library(dplyr)
df %>% group_by(week) %>% summarize(count=n(), sum=sum(Moving.Time))
df$Activity.Date%summary(count=n(),sum=sum(Moving.Time))
使用以下命令将activity.date列转换为日期/时间对象:
activitydate <-as.POSIXct("Jan 1, 2020, 8:36:55 PM", format="%b %d, %Y, %r")
有关更多信息,请参阅strtime
的帮助
更新要回答关于提供行数的第二个问题,可以使用dplyr库轻松完成
df$Activity.Date <- as.POSIXct(df$Activity.Date, format="%b %d, %Y, %r")
df$week <- format(df$Activity.Date, "%V")
library(dplyr)
df %>% group_by(week) %>% summarize(count=n(), sum=sum(Moving.Time))
df$Activity.Date%summary(count=n(),sum=sum(Moving.Time))
好的,谢谢。但是,有没有一种方法可以让我也添加一个列,其中包含多少行的总和?我以前没有意识到我需要它……你可以使用n()
来计算每周的行数。将最后一行更改为摘要(Moving.Time=sum(Moving.Time),count=n())
。好的,谢谢。但是,有没有一种方法可以让我也添加一个列,其中包含多少行的总和?我以前没有意识到我需要它……你可以使用n()
来计算每周的行数。将最后一行更改为摘要(Moving.Time=sum(Moving.Time),count=n())
。