Rのデータフレームに入れたい長いベクトルがあります。これが例です
vector<-c("1","John Doe","15%","2","Janet Doe","13%","3","Jack William Doe","10%")
このような出力が欲しいのですが
Position Names Percentage
1 1 John Doe 15%
2 2 Janet Doe 13%
3 3 Jack William Doe 10%
解決策にはdata.frame()とおそらくstrsplit()が含まれることはわかっていますが、後で可変長の名前を分割します。
オプションはmatrix
、列の数(ncol
)を指定してに変換し、に変換してからdata.frame
、で列タイプを変更することです。type.convert
out <- as.data.frame(matrix(vector, ncol = 3, byrow = TRUE,
dimnames = list(NULL, c("Position", "Names", "Percentage"))),
stringsAsFactors = FALSE)
out[] <- lapply(out, type.convert, as.is = TRUE)
out
# Position Names Percentage
#1 1 John Doe 15%
#2 2 Janet Doe 13%
#3 3 Jack William Doe 10%
@nicolaがコメントで述べたように、最近のバージョンでtype.convert
も導入されたメソッド(チェックイン)。したがって、最後の行を次のように変更できますdata.frame
R
R 3.6.0
out <- type.convert(out, as.is = TRUE)
または別のオプションはread.csv/read.table
、「ベクトル」を単一の文字列に折りたたんだ後に使用することです
read.csv(text= gsub("(([^,]+,){2}[^,]+),", "\\1\n",toString(vector)),
header = FALSE, stringsAsFactors = FALSE, col.names = c("Position",
"Names", "Percentage"), strip.white = TRUE)
# Position Names Percentage
#1 1 John Doe 15%
#2 2 Janet Doe 13%
#3 3 Jack William Doe 10%
これにより、後で変換するのではなく、値に基づいてタイプが適切に変換されるようになります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加