2016-09-29 14 views
1

データフレームを作成して、最初の列に「:」を分割して1つの新しい列を分割したいとします。データフレーム内のR strsplit関数

data frame: 
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results:ASL|435 214.4421 
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results:ASS1|445 2863.8055 
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results:OTC|5009 0 
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results:ASL|435 332.7522 
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results:ASS1|445 3322.629 
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results:OTC|5009 0 

desired output: 
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results ASL|435 214.4421 
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results ASS1|445 2863.8055 
unc.edu.0057f9f7-779b-4914-8290-abbad2a0d81e.2556919.rsem.genes.normalized_results OTC|5009 0 
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results ASL|435 332.7522 
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results ASS1|445 3322.629 
unc.edu.050c2191-b96c-41e7-abdb-e52cbe82f268.2456235.rsem.genes.normalized_results OTC|5009 0 

私は

strsplit(df$V1, split = "\\:") 

を試してみましたが、strsplitでエラーが発生しました(T $のV1、スプリット= "\:"):非文字引数が出てきます。ありがとうございました。

+0

'V1'列が' character'クラスではなく 'factor'であることを確認してください。 – user2100721

答えて

4

エラーは、クラスfactorの変数があるためです。 characterに変換し、それは我々が2つの列を作成する必要がある場合は、1つの簡単な方法はread.table

df1 <- read.table(text = as.character(df$V1), sep=":", stringsAsFactors=FALSE) 

それともtidyr

library(tidyr) 
separate(df1, V1, into = c("V1", "V2")) 
2
から separateを使用している

lst <- strsplit(as.character(df$V1), split = ":", fixed = TRUE) 

を動作するはずです

tidyr::separate(data = df, col = V1, into = c('a', 'b'), sep = ':') 
関連する問題