【问题标题】:Extract First and Last date from one column and Insert into 2 new columns从一列中提取第一个和最后一个日期并插入到 2 个新列中
【发布时间】:2016-08-15 15:33:50
【问题描述】:

我有一个水质数据集,其中包含 R 中的日期、结果、参数、站点。我正在尝试提取每个站点采样的第一个和最后一个日期,这将在末尾占用两个新列我的数据框。我还有月、日和年的列。

结构如下:

'data.frame':   50954 obs. of  8 variables:
$ Date     : chr  "6/9/2016" "6/9/2016" "6/8/2016" "6/8/2016" ...
$ Result   : num  400 160 2200 260 660 550 2100 270 750 82 ...
$ Units    : chr  "M" "M" "M" "M" ...
"Fecal coliforms" ...
$ Station  : chr  "RIO GRANDE DE MANATI AT HWY 2 NR MANATI, PR" "RIO GRANDEE DE MANATI AT HWY 2 NR MANATI, PR" "RIO CAONILLAS NR JAYUYA, PR"
"RIO CAONILLAS NR JAYUYA, PR" ...
$ month    : num  6 6 6 6 6 6 6 6 6 6 ...
$ year     : num  2016 2016 2016 2016 2016 ...
$ day      : num  9 9 8 8 8 8 7 7 7 7 ...

我一直在这样做以按站提取摘要统计信息:

P303.split <- split(P303, Parameter)
Copper = P303.split$'Copper'
CopperSumStats = data.frame(do.call("rbind", by(Copper[, "Result"],  Copper[,"Station"], summary)))

所以现在只需要开始和结束日期...提前致谢!

【问题讨论】:

  • 你应该尝试做你的榜样reproducible。您能否提供一些数据,可能使用dput

标签: r date


【解决方案1】:

我认为您可以使用dplyr 来执行您需要的计算:

library(dplyr) #load package
df1$Date <- as.Date(df1$Date, format = "%d/%m/%Y") #format date
#data manipulation
df1 %>%
group_by(Station) %>%
mutate(FirstDate = min(Date), LastDate = max(Date)) -> df2

此解决方案假定您的数据位于名为 df1data.frame 中。

【讨论】:

  • 感谢您的帮助!不过,我似乎在我的 FirstDate 和 Last Date 列中得到了 NAs
  • @Kelsey 你重新格式化你的日期栏了吗?日期是否有 NA 值?如果是这样,您需要在minmax 函数中指定na.rm = T
猜你喜欢
  • 2015-05-16
  • 2015-11-02
  • 2013-02-09
  • 2014-12-14
  • 1970-01-01
  • 2023-01-02
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
相关资源
最近更新 更多