mm:ss.00形式(つまり、02:15.45または00:34.58)のパフォーマンス時間データがあります。Rは変数を要因として認識していますが、各パフォーマンス時間を秒に変換したいと思います(つまり、02:15.45から135.45)。答えを探しましたが、うまくいく方法が見つからないようです。前もって感謝します。
			
			19675 次
		
6 に答える
            31        
        
		
lubridate パッケージの使用 (tidyverse の一部):
library(lubridate)
period_to_seconds(hms("12:12:54"))
于 2015-07-21T21:20:47.030   に答える
    
    
            19        
        
		
何年も使っているのがこちら。これもベクトル化されています。
toSeconds <- function(x){
   if (!is.character(x)) stop("x must be a character string of the form H:M:S")
   if (length(x)<=0)return(x)
   unlist(
      lapply(x,
         function(i){
            i <- as.numeric(strsplit(i,':',fixed=TRUE)[[1]])
            if (length(i) == 3) 
               i[1]*3600 + i[2]*60 + i[3]
            else if (length(i) == 2) 
               i[1]*60 + i[2]
            else if (length(i) == 1) 
               i[1]
         }  
      )  
   )  
} 
そしてその逆 (小数秒を要求された桁数に保持します:
secondsToString <- function(x,digits=2){
   unlist(
      lapply(x,
         function(i){
            # fractional seconds
            fs <- as.integer(round((i - round(i))*(10^digits)))
            fmt <- ''
            if (i >= 3600)
               fmt <- '%H:%M:%S'
            else if (i >= 60)
            fmt <- '%M:%S'
            else
               fmt <- '%OS'
            i <- format(as.POSIXct(strptime("0:0:0","%H:%M:%S")) + i, format=fmt)
            if (fs > 0)
               sub('[0]+$','',paste(i,fs,sep='.'))
            else
               i
         }
      )
   )
}
于 2012-05-31T15:17:23.730   に答える
    
    
            10        
        
		
strptime を調べます。具体的には
t = "02:15.45"
(as.numeric(as.POSIXct(strptime(t, format = "%M:%OS"))) - 
    as.numeric(as.POSIXct(strptime("0", format = "%S"))))
これは機能しますが、おそらく少し厄介です (主に POSIXct の迷惑な自動単位変換のため、この方法で行う...)
于 2012-05-31T14:56:27.053   に答える
    
    
            6        
        
		
library(lubridate)
df$variable<- hms(df$variable)
df$variable<- as.numeric(df$variable)
ワンライナーにしてもOKです。私にとって魅力のように機能します。
これが役立つことを願っています。
于 2017-03-16T07:40:41.730   に答える
    
    
            3        
        
		
私はそれほど快適ではないので、利用可能な組み込み関数があるかどうかはわかりませんが、このコードを作成しました。
mmss_to_ss <- function  (string)
{
  mmss <- strsplit (string, ":", T)
  mm <- as.numeric (mmss[[1]][1])
  ss <- as.numeric (mmss[[1]][2])
  return (mm * 60 + ss)
}
これは、mm:ss 形式の時間文字列を受け入れ、秒の値を返します。hh:mm:ss から秒に変換するようにコードを簡単に変更することもできます。
于 2012-05-31T15:06:57.570   に答える
    
    
            0        
        
		
Lubridate パッケージを使用すると、これを簡単に行うことができます。"h:m:s" の形式を使用すると、変数を lubridate オブジェクトに変換できます。
hms("12:12:54")
そして、それを秒に変換します
seconds(hms("12:12:54"))
これはJSSのlubridate記事へのリンクです
于 2012-05-31T16:43:23.310   に答える