ここにいくつかの方法があります。彼らは後でいくつかのクリーニングが必要になりますが、あなたを始めなければなりません。
# read in the data
temp <- readLines(textConnection("43017-10-04 10:00:15,43551.435,1,43415438,43551.435,43551.50,44360547,0,0,C,\r\n43017-10-04 10:00:15,43551.50,4,43415437,43551.435,43551.50,44360554,0,0,C,\r\n43017-10-04 10:00:15,43551.50,1,43415435,43551.435,43551.50,44360554,0,0,C,\r\n"))
結果は、ベクトルの各要素が最終オブジェクトの行になる文字ベクトルです。 readLines
はデフォルトでそれぞれ\n
の入力を分割します。
まず、あなたはdo.call
で文字ベクトルとrbind
それらすべてのリストを取得するにはstrsplit
を使用することができます。例えば
# return a character matrix
do.call(rbind, strsplit(temp, ","))
、最初の5列
do.call(rbind, strsplit(temp, ","))[, 1:5]
[,1] [,2] [,3] [,4] [,5]
[1,] "43017-10-04 10:00:15" "43551.435" "1" "43415438" "43551.435"
[2,] "43017-10-04 10:00:15" "43551.50" "4" "43415437" "43551.435"
[3,] "43017-10-04 10:00:15" "43551.50" "1" "43415435" "43551.435"
だけdata.frame
でこれらを包む、data.frameを返すように。
第二には、data.table
のtstrplit
を使用して、あなたはdata.frameを返すために
library(data.table)
data.frame(tstrsplit(temp, ",", names=TRUE))
を行うことができます。最初の5列は再び
V1 V2 V3 V4 V5
1 43017-10-04 10:00:15 43551.435 1 43415438 43551.435
2 43017-10-04 10:00:15 43551.50 4 43415437 43551.435
3 43017-10-04 10:00:15 43551.50 1 43415435 43551.435
4 <NA> <NA> <NA> <NA> <NA>
であることに注意してください。基礎となるベクトルはクラスファクタなので、数値や文字などに変換する必要があります。
手でコンマの数を数えたくない場合は、num_cols < - length(unlist(gregexpr( "、" s))) ' – Nate