2016-02-17 17 views
5

Bazı işlemler için bir csv'yi R'ye yüklemeye çalışıyorum ancak verileri okumak için çalışırken garip bir sorunla karşılaşıyorum.read.csv() için çıktı

10000011791441224671,V_Display,exit 
10000011951441812316,V_Display,exit 
10000013211441319797,V_Display,exit 
1000001331441725509,V_Display,exit 
10000013681418242863,C_GoogleNonBrand,V_Display,V_Display,V_Display,V_Display,_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,exit 
10000014031441295393,V_Display,exit 

bu veri varlık için çıkış:

csv doesnt herhangi başlıkları var ve verileri

newClick <- read.csv("test.csv", header = F) 

okumak için aşağıdaki basit kodu kullanarak Ve takip ediyorum örnek bir veri kümesi ise 6 obs beklenen veri çerçevesi. 18 değişkenin

İşte zor kısmı budur. Ben

10000011791441224671,V_Display,exit 
10000011951441812316,V_Display,exit 
1000000191441228436,V_Display,exit 
10000013211441319797,V_Display,exit 
1000001331441725509,V_Display,exit 
10000013681418242863,C_GoogleNonBrand,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,exit 
10000014031441295393,V_Display,exit 

gibi veri kümesindeki başka bir satır eklerseniz Bunun çıkışı 3 değişkenlerin garip 12 gözl olduğunu. Yakın analizde, ikinci son sıranın her birinin üç sütun ile her biri tuhaf olan 6 sıraya bölünmüş olduğunu fark ettim.

Bunun hakkında herhangi bir düşünce var mı?

+4

'? Read.table' den:' Veri sütunlarının sayısı, ilk beş satırlık girdiye (veya beşten daha az satırına sahipse tüm girdiye) veya 'uzunluğuna bakarak belirlenir. col.names 'belirtilir ve ise daha uzun'. – nicola

+0

@Nicola Teşekkürler Temel hakkı aldıktan sonra, resmin geri kalanını yapmak çok kolay. – hbabbar

cevap

3

Açıklamalarda belirtildiği gibi, bu, sütun sayısı ilk beş satır tarafından belirlendiği için oluşur. Sıkışık bir durumdaysanız, test ettiğim ve iyi çalıştığını düşündüğüm olası bir çözüm. Buradaki gizli, col.names için bir veri girmek, bu da verideki sütunların sayısıdır. count.fields() kullanarak sütun sayısını alabiliriz. Dosya adınızı file'a ekleyin. İşte

## get the number of columns 
ncols <- max(count.fields(file, sep = ",")) 
## read the data with all columns as character 
df <- read.csv(file, header = FALSE, col.names = paste0("V", seq_len(ncols))) 

verilerinizin ile test kodu: r Documentation Başına

txt <- "10000011791441224671,V_Display,exit\n10000011951441812316,V_Display,exit\n1000000191441228436,V_Display,exit\n10000013211441319797,V_Display,exit\n1000001331441725509,V_Display,exit\n10000013681418242863,C_GoogleNonBrand,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,exit\n10000014031441295393,V_Display,exit" 

ncols <- max(count.fields(textConnection(txt), sep = ",")) 
df <- read.csv(text = txt, header = FALSE, col.names = paste0("V", seq_len(ncols))) 
dim(df) 
# [1] 7 18 
0

,

"veri sütun sayısı ilk beş çizgilerine bakarak belirlenir> girişi (veya beş satırdan daha azsa tüm girdiyi) veya belirtildiyse ve daha uzunsa> col.names uzunluğundan.> fill veya blank.lines.skip doğruysa bu yanlış olabilir. gerekirse col.names belirtin "

İlk 5 satır, ilk örnekte daha geniş bir gözlem içerdiğinden ve ikinci örnekte bulunmadığından, veri kümesi ilk olarak doğru olarak gelir ve ikinci satırda ayrı satırlara sarılır.

Bunun gerçekleşmemesinin yolu CSV'nize sütun başlıkları eklemek veya read.csv işlevinin col.name argümanını kullanarak uygun miktarda sütun tanımlamaktır.