动态数据框中从字符到日期的列名
Posted
技术标签:
【中文标题】动态数据框中从字符到日期的列名【英文标题】:Colnames from characther to date in dynamic dataframe 【发布时间】:2021-08-08 00:29:22 【问题描述】:#我有一个以 colnames 为字符的数据框。数据框每天更新。 #我需要做一个时间线图,因此动态数据集合的colnames是日期格式的。
#我在这里下载df:
df_death <- read.csv2("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv" ,
header = TRUE,sep = ",", quote = "\\\"")
#[1:4] 之后的列名以 X1.22.20 开头,我将其解释为月.日.年。
#在我解决日期之前,我将前四列格式化为:
df_death$Province.State <- as.factor(jsse_death$Province.State)
df_death$Country.Region <- as.factor(jsse_death$Country.Region)
df_death$Lat <- as.numeric(jsse_death$Lat)
df_death$Long <- as.numeric(jsse_death$Long)
#然后,我过滤掉焦点国家:
df_death_Nor <- jsse_death %>%
filter(Country.Region == "Norway")
#将列名转换为日期格式:
names(df_death_Nor)[-1:-4] <- as.Date(names(df_death_Nor)[-1:-4],format="X%M.%d.%y")
#这会产生五位整数,其中第一个日期列有 18404。 #这个(如果是日期)日期的来源应该是 1969-09-02,收到正确的日期 2020-01-22。
希望你们中的一些专家可以帮助我。
【问题讨论】:
【参考方案1】:渴望评论。 as.Date()
为我们提供了一个 "Date"
类的对象,这些值实际上是标记为整数,用于计算自 "1970-01-01"
以来的天数,即所谓的“原点”。通过将它们分配给名称,标签被剥离。所以你想要的是强制标签as.character()
。
names(df_death_Nor)[-1:-4] <-
as.character(as.Date(names(df_death_Nor)[-1:-4], format="X%m.%d.%y"))
以后你可能想重塑它?
df_death_Nor_l <- reshape2::melt(df_death_Nor, id.vars=1:4, variable.name="date")
head(df_death_Nor_l, 3)
# Province.State Country.Region Lat Long date value
# 1 Norway 60.472 8.4689 2020-01-22 0
# 2 Norway 60.472 8.4689 2020-01-23 0
# 3 Norway 60.472 8.4689 2020-01-24 0
tail(df_death_Nor_l, 3)
# Province.State Country.Region Lat Long date value
# 480 Norway 60.472 8.4689 2021-05-15 774
# 481 Norway 60.472 8.4689 2021-05-16 774
# 482 Norway 60.472 8.4689 2021-05-17 774
【讨论】:
谢谢 jay.sf。我仍然有错误来源的问题,第一个日期列有 May 22 ,应该是 January 22 。 @Frank 是的,我们想要一个小的%m
几个月,%M
是分钟,请参阅更新。 PS:你可以在?strptime
中查找命令。
@Frank 请mark answer as accepted.以上是关于动态数据框中从字符到日期的列名的主要内容,如果未能解决你的问题,请参考以下文章