2017-05-03 45 views
-1

分離柱拆分我想到每一列中的4行從輸入數據分割到低於其它分開的一列中所示的專家輸出如何每列中一個行中的R

輸入

cytoband 11qE2   1qC1.1  13qD2.1 
    q value  1.16   1.53  1.13 
    wide  11:119210  1:50490  13:107190 
    genes Aatk,Actg1,Alyref Tin,Ern Alk,Nf12 

預期輸出

cytoband 11qE2   1qC1.1  13qD2.1 
q value  1.16   1.53  1.13 
wide  11:119210  1:50490  13:107190 
genes Aatk    Tin   Alk 
     Actg1   Ern   Nf12 
     Alyref   
+1

你應該轉置你的數據;你的變量是水平的而不是垂直的,這在data.frame中不起作用。一旦你這樣做,你需要決定你想如何安排你的數據。您可以重複其他數據,在流水列中插入NA(不建議除非基因順序有意義),或者使用列表列(最有效的選項,但需要一點技巧纔能有效操縱)。 – alistaire

回答

1

我想你想要的是在tidyr包separate_rows。

還有就是文檔的權利在一個例子:

df <- data.frame(
    x = 1:3, 
    y = c("a", "d,e,f", "g,h"), 
    z = c("1", "2,3,4", "5,6"), 
    stringsAsFactors = FALSE 
) 
separate_rows(df, y, z, convert = TRUE) 

如果您使用的separate_rows_可以使用列名標準的eval版本,它可以讓你這樣的:

names <- colnames(df) 
for(col in names) { 
df <- separate_rows_(df, col, sep = ",", convert = FALSE) 
} 

不完美,因爲它會導致重複的值,但也許有一些開始?

+0

@ Knachman..good瞭解有關separate_rows()函數。在我的情況下,我有139列。所以我試着去做; separate_rows(dm1,V1:V139,convert = TRUE);但出現錯誤錯誤:所有嵌套的列必須具有相同數量的元素。 – beginner

+0

你說得對,那是一個煩人的問題!我的第一個想法是試着把它放在一個循環中,我在上面編輯了一些幫助你開始的東西。 – Knachman

相關問題