2016-01-07 23 views
7

私はcsvファイルをRに読み込もうとしています。ファイルに2つのセパレータがあり、3列のデータとして読み込む方法がわかりませんフレーム、すなわち、第1、第2、および年。 これは次のようにファイルがどのように見えるかのサンプルです:私はsep="["sep2=","fread()機能を試してみた複数区切りのcsvファイルからデータを読み込み、Rで

[Alin Deutsch, Mary F. Fernandez, 1998], 
[Alin Deutsch, Daniela Florescu, 1998], 

が、それは動作しません。また、Rは、ちょうど1列ベクトルとしてそれを おかげ

を行を読みます
+1

sedの使用またはAWK以上を使用して3 coumnsに列ベクトルを分割しました... Rにインポートする前に '['を削除するには? – Roland

+0

これらの関数はRに埋め込まれていますか? – sarashaker

+0

いいえ、それらは(強力で高速な)コマンドラインテキストエディタです。あなたはRの中からそれらを呼び出すことができます。 – Roland

答えて

6

1)read.tableを/サブsep = ","comment.char = "]"を使用してそれを読みます。これは、フィールドを分割し、末尾の]を取り除くと、すべてそれの後に、その後、私たちはただsubV1から[を削除することができます。

Lines <- "[Alin Deutsch, Mary F. Fernandez, 1998], 
[Alin Deutsch, Daniela Florescu, 1998]," 

DF <- read.table(text = Lines, sep = ",", comment.char = "]", as.is = TRUE, 
      strip.white = TRUE, # might not need this one 
      col.names = c("Name1", "Name2", "Year")) 
DF <- transform(DF, Name1 = sub("[", "", Name1, fixed = TRUE)) 

与える:

> DF 
     Name1    Name2 Year 
1 Alin Deutsch Mary F. Fernandez 1998 
2 Alin Deutsch Daniela Florescu 1998 

2)をお読みください。パターンもう1つの可能性は、gsubfnにread.patternを使用することです。このパターンは、各行が[、で始まる最後の3つのカンマを持つ]を前提としています。これは問題に対応していますが、そうでない場合は、正規表現を変更する必要があります。

library(gsubfn) 

read.pattern(text = Lines, pattern = ".(.*?),(.*?),(.*?).,", as.is = TRUE, 
     strip.white = TRUE, # might not need this one 
     col.names = c("Name1", "Name2", "Year")) 

を与える。

+0

私はこれをやって、それはテキストデータでは動作しますが、csvファイルでは動作しません。それでもそれを1列として読み取る – sarashaker

+0

(2)を参照している場合、実際のデータが質問に示されているデータから逸脱している場合は、パターンを適切に修正する必要があります。 –

6

あなたはsep=","でファイルを読み込み、その後、余分な括弧削除できます。

df <- read.csv(file = textConnection("[Alin Deutsch, Mary F. Fernandez, 1998], 
[Alin Deutsch, Daniela Florescu, 1998],"),stringsAsFactors=FALSE,head=FALSE) 

df <- df[,-4] 

df$V1 <- gsub("\\[","",df$V1) 
df$V3 <- gsub("\\]","",df$V3) 

names(df) <- c("first","second","year") 
df 

出力

  first    second year 
1 Alin Deutsch Mary F. Fernandez 1998 
2 Alin Deutsch Daniela Florescu 1998 
0

私はこのソリューションを試してみました。

まず、私は、gsub

clean <- function(x){ 
gsub("\\[|\\]","",x) 
} 

sample_clean <- sapply(sample,clean) 
head(sample_clean) 

を使用して、ファイルから "[" と "]" を除去し、Iはstr_split_fixed

data <- str_split_fixed(sample_clean,",",3) 
関連する問題