r - 从 R 中的时间提取 AM/PM
问题描述
嗨,我有一个像这样的示例数据框
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
解决方案
您可以删除冒号后的所有内容,将数据转换为整数并分配'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
推荐阅读
- python - 使用 Matplotlib 绘制时间序列:使用 datetime.datetime() 有效,但 datetime.datetime.strptime(str, format) 无效
- amazon-web-services - Kubernetes ELB 服务:如何禁用 TLS 1.0 和 1.1?
- fortran - scalapack中的行分配不一致
- php - Wordpress 页面正在获取全局标题而不是辅助标题
- dns - 检查远程主机是否能够解析 Ansible 中的内部 url
- python-3.x - 修改/更新 pyspark 列值
- talend - 如何在 Talend 中获取上下文组名称
- tensorflow2.0 - 在 tf.keras (TF2.0) 中使用定制训练进行正则化
- r - DiagrammeR - 箭头问题
- javascript - 我不断收到一条错误消息,提示“未捕获的 TypeError:无法读取未定义的属性‘点击’”有谁知道出了什么问题?