尝试在R中将char的动态组列更改为时间

时间:2018-01-25 16:50:12

标签: r class

我正在将参考表加载到R中,该表具有一组列为时间(hh:mm)的列。第一个问题是R认为它们是双倍而不是时间。我知道我可以单独告诉R这些列是时间,但需要更改为时间的列数是动态的。它们总是组合在一起,所以我可以很容易地告诉R列的范围。使事情变得更容易"我已将所有列作为字符引入,但如果有一个解决方案我不需要这样做,那就太棒了。

RefSF <- read_csv(datapathSF, col_types = cols(.default = "c")) 

我告诉R列名称和索引的范围是什么。

ref.SF <- as.data.table(RefSF)
ref.Sta <- as.data.table(RefSta)

SFCCount <- as.integer(ncol(ref.SF)) -1
SFMetal <-  as.integer(which(colnames(ref.SF) == "Metal")) + 1
SFSta1 <- colnames(ref.SF)[SFMetal]
SFStaL <- colnames(ref.SF)[SFCCount]
StCol <- list(SFMetal:SFCCount)
StColNam <- list(colnames(ref.SF)[SFMetal:SFCCount])

以上代码创建了这两个列表。

> StCol
[[1]]
 [1] 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

> StColNam
[[1]]
 [1] "ATL" "AUS" "BOS" "CDG" "CLT" "CUN" "DCA" "DEN" "DFW" "EWR" "EZE" "FLL" "FRA" "GIG" "GRU" "JFK" "LAS" "LAX" "LGA" "LHR" "MCO" "MEX"
[23] "MIA" "NRT" "ORD" "PHL" "PHX" "PIT" "RDU" "SAN" "SAT" "SCL" "SEA" "SFO" "SJU" "STL" "TPA" "TUL"

字段填充时间(即06:30)或NA。

我试图循环遍历列范围,因为将类从char更改为时间。单独地,这段代码可以工作,但它不能在循环中工作。

for (Sta in names(StColNam)){
  ref.SF[[Sta]] <- strptime(ref.SF[Sta], format = "%H:%M")
  ref.SF[[Sta]] <- as.POSIXlt(ref.SF[Sta])
}

代码似乎没有错误地运行,但是类没有改变。 (ATL是该范围内的第一个列名称)

> class(ref.SF$ATL)
[1] "character"

感谢您的帮助。

0 个答案:

没有答案