我快要秃头了,想弄清楚这个问题。我正在尝试根据位置从不同长度的字符串中提取字符。例如,假设我有一个包含 8 行和 1 列的数据框,标题为:“时间”
该列在每一行中具有以下值:
TIME
5
20
100
105
150
1050
2005
2010
我正在尝试找出如何提取这些字符串中的字符并根据位置将其转换为以下格式。如果仔细观察,您会发现最后两个字符位于 00:here:00 而所有其他字符都位于 here:00:00。结果应该是:
5 -> 00:05:00(如果只有 1 个字符)
20 -> 00:20:00 (如果有2个字符)
100 -> 1:00:00 (如果有 3 个字符)
105 -> 1:05:00 (如果有3个字符)
150 -> 1:50:00 (如果有3个字符)
1050 -> 10:50:00 (如果有 4 个字符)
2005 -> 20:05:00 (如果有4个字符)
2010 -> 20:10:00(如果有4个字符)
从本质上讲,伪代码应该是这样的 从 dataframe$column1 中提取最后两个字符并将其放置在 00:here:00 - 所有剩余的字符都应该放在 here:00:00
最佳答案
format( as.POSIXct(sprintf("%04.0f", TIME), format="%H%M"), format="%H:%M:%S")
[1] "00:05:00" "00:20:00" "01:00:00" "01:05:00"
[5] "01:50:00" "10:50:00" "20:05:00" "20:10:00"
sprintf
用前导 0 填充 hte 时间变量的字符值。 as.POSIXct
读入时间作为当前日期,然后外部 format.POSIXt
函数删除日期字符。
关于r - 如何根据位置从不同长度的字符串中提取字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31664008/