动态数据框中从字符到日期的列名

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.

以上是关于动态数据框中从字符到日期的列名的主要内容,如果未能解决你的问题,请参考以下文章

JSP页面中在文本框中输入内容,动态从数据库模糊查询显示到下拉框中!你这个可以给发一下吗?

替换熊猫数据框中部分匹配字符串的列名

SQL 动态数据透视表列顺序

R:识别数据框中的列名是不是包含字符串

具有可变列名的动态更新语句

删除R中数据框中所有列名的前两个字符