将日期和时间列组合成dd / mm / yyyy hh:mm

时间:2017-06-02 02:44:15

标签: r date as.date

R和R工作室的新手。 我在五个单独的列中导入了一个带有日期和时间的数据集: YYYY MM DD hh mm 如何将这些组合成格式为dd / mm / yyyy hh:mm的单个日期列?

数据集:

See Image for what the dataset looks like

3 个答案:

答案 0 :(得分:2)

基于@LauraKate在评论中提出的新信息和问题。

以下答案是使用软件包constant[FirebaseDatabase mydb =][2] FirebaseDatabase.getInstance(); DatabaseReference mDatabase = mydb.getReference().child("Dealers").child(dealerId).child("Stock").child(stockAddDate); Map<String, String> userData = new HashMap<String, String>(); userData.put("Product_Name", productName); userData.put("Holding_Stock", holdingStock); userData.put("Primary_Stock", primaryStock); mDatabase.push().setValue(userData); 完成的:

setValue

enter image description here

当每日最高温度高于26度(C)时获得警告点?

dplyr

enter image description here

答案 1 :(得分:0)

以下是使用lubridate包(一个用于处理日期的优秀包)的答案。您需要将各个列粘贴或连接在一起,擦除空白,然后使用lubridate将其从字符串转换为日期格式。注意我使用了dmy_hms函数(您可以根据需要使用https://cran.r-project.org/web/packages/lubridate/vignettes/lubridate.html

中的其他函数
> df=NULL
> df$H=10
> df$M=54
> df$S=27
> df$DD=12
> df$MM=06
> df$YYYY=2007
> df=as.data.frame(df)
> df
   H  M  S DD MM YYYY
1 10 54 27 12  6 2007
> attach(df)

> df$dat1=gsub(" ","",(paste(DD,"/",MM,"/",YYYY)))
> df
   H  M  S DD MM YYYY      dat1
1 10 54 27 12  6 2007 12/6/2007
> df$tim1=gsub(" ","",(paste(H,":",M,":",S)))
> df
   H  M  S DD MM YYYY      dat1     tim1
1 10 54 27 12  6 2007 12/6/2007 10:54:27



> df$dat2=paste(df$dat1,df$tim1)
> df
   H  M  S DD MM YYYY      dat1     tim1               dat2
1 10 54 27 12  6 2007 12/6/2007 10:54:27 12/6/2007 10:54:27
> str(df)
'data.frame':   1 obs. of  9 variables:
 $ H   : num 10
 $ M   : num 54
 $ S   : num 27
 $ DD  : num 12
 $ MM  : num 6
 $ YYYY: num 2007
 $ dat1: chr "12/6/2007"
 $ tim1: chr "10:54:27"
 $ dat2: chr "12/6/2007 10:54:27"
> library(lubridate)

Attaching package: ‘lubridate’

The following object is masked from ‘package:base’:

    date

> df$dat3=dmy_hms(df$dat2)
> str(df)
'data.frame':   1 obs. of  10 variables:
 $ H   : num 10
 $ M   : num 54
 $ S   : num 27
 $ DD  : num 12
 $ MM  : num 6
 $ YYYY: num 2007
 $ dat1: chr "12/6/2007"
 $ tim1: chr "10:54:27"
 $ dat2: chr "12/6/2007 10:54:27"
 $ dat3: POSIXct, format: "2007-06-12 10:54:27"
> df
   H  M  S DD MM YYYY      dat1     tim1               dat2                dat3
1 10 54 27 12  6 2007 12/6/2007 10:54:27 12/6/2007 10:54:27 2007-06-12 10:54:27

答案 2 :(得分:0)

您可以使用lubridate::make_datetime

library(dplyr)
library(lubridate)

df <- data_frame(
  YYYY = sample(2000:2017, 10),
  MM = sample(1:12, 10),
  DD = sample(1:28, 10),
  hh = sample(1:23, 10),
  mm = sample(1:59, 10)
)

mutate(df, 
  date_time = make_datetime(
    year = YYYY, month = MM, day = DD, hour = hh, min = mm
  )
)

#> # A tibble: 10 x 6
#>     YYYY    MM    DD    hh    mm           date_time
#>    <int> <int> <int> <int> <int>              <dttm>
#>  1  2007     8    11     4    27 2007-08-11 04:27:00
#>  2  2002     7     5    23    51 2002-07-05 23:51:00
#>  3  2006     2    25    12    45 2006-02-25 12:45:00
#>  4  2008    10     1     1     1 2008-10-01 01:01:00
#>  5  2000     1    28    10    42 2000-01-28 10:42:00
#>  6  2010     4    12    21    37 2010-04-12 21:37:00
#>  7  2013    12     8    16    58 2013-12-08 16:58:00
#>  8  2014     5    17    18    56 2014-05-17 18:56:00
#>  9  2009     9    27    20    36 2009-09-27 20:36:00
#> 10  2001     3    14    14    14 2001-03-14 14:14:00