次の形式のテキスト文字列 (各文字列内にコンマで区切られた 6 つの値 (0 から 100) を持つ) を含む私data.frame
のベクトルでは:x
x[1] "3,2,4,34,2,9"
x[2] "45,,67,,,"
x[3] ",,,,99,"
これは私が問題を抱えている実際のベクトルへのリンクです: x.cvs
x.cvs
残念ながら、「0」の値は、2 つのコンマの間、または最初のコンマの前、または最後のコンマの後に「空白なし」として記録されます。
最初に次のように変換できるとよいでしょう。
x[1] "3,2,4,34,2,9"
x[2] "45,0,67,0,0,0"
x[3] "0,0,0,0,99,0"
しかし、最も重要なことは、このベクトルを 6 つの異なるベクトル x1、x2、x3、x4、x5、x6 に分割し、それぞれが文字列から値を取得し、カンマ間の「スペースなし」を「0」に置き換えることです。 、たとえば、結果は次のようになります。
x1[3] 0
x6[2] 0
カンマの間に値があれば strsplit() は機能したと思いますが、値がなく、空のスペースでさえないため、NAを取得せずに続行する正しい方法がわかりません。
次のことを試しましたが、多くのエラーが発生します。
x<- as.character(x)
x <- gsub(",,", ",0,", x)
x <- gsub(", ,", ",0,", x)
splitx = do.call("rbind", (strsplit(x, ",")))
splitx = data.frame(apply(splitx, 2, as.numeric))
names(splitx) = paste("x", 1:6, sep = "")
エラーが出ます...
In rbind(c("51", "59", "59", "60", "51", "51"), c("51", "59", "59", :
number of columns of result is not a multiple of vector length (arg 10994)
In apply(splitx, 2, as.numeric) : NAs introduced by coercion