【问题标题】:Extract AM/PM from Time in R [duplicate]从R中的时间提取AM / PM [重复]
【发布时间】:2020-09-08 19:37:17
【问题描述】:

您好,我有一个这样的示例数据框

Time <- c('0:00', '1:00', '2:00', '13:00', '14:00')
Time = data.frame(x)

所以我想做的是基于“时间”列创建另一列“AMPM”。 “AMPM”应该能够显示时间是上午还是下午

最终的输出应该是这样的

   Time AMPM
1  0:00   AM
2  1:01   AM
3  2:09   AM
4 13:52   PM
5 14:06   PM
6 15:33   PM
7 16:27   PM
8 21:40   PM

【问题讨论】:

  • 您的数据是否存储为字符?还是一些时间数据类型?如果您在 reproducible format 中提供数据而不是作为图像提供数据会更容易提供帮助,因为实际上无法判断数据是如何存储在图像中的。
  • 您好,很抱歉给您带来不便。我已经编辑了我的问题。我希望这将有助于尝试了解我想要做什么

标签: r


【解决方案1】:

您可以删除冒号后的所有内容,将数据转换为整数并将'PM' 分配给所有大于11 的值,否则分配"AM"

df <- data.frame(Time = c('0:00', '1:00', '2:00', '13:00', '14:00'))
df$AMPM <- ifelse(as.integer(sub(':.*', '', df$Time)) > 11, 'PM', 'AM')
#Without ifelse
#c('AM', 'PM')[(as.integer(sub(':.*', '', x)) > 11) + 1]
df
#   Time AMPM
#1  0:00   AM
#2  1:00   AM
#3  2:00   AM
#4 13:00   PM
#5 14:00   PM

【讨论】:

  • 您好,感谢您的回复。但是我的数据集也有其他时间值,例如 08:38、12:40 等。所以我要花很长时间才能使用这种方法
  • @dummy123 请尝试示例,适用于 08:38、12:40 等。
  • @dummy123 您不必手动输入每个值。读取R中的数据df &lt;- read.csv('filename.csv'),然后使用上面的方法假设列名是Time
  • 太棒了。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多