2016-04-08 48 views
1

我有一個名爲df.alt.alleles很長的數據幀看起來像這樣(〜9萬行):爲什麼數據框尺寸中缺少可見的列?

    AC 
1:123456789_G/C  5 
1:139406018_A/T  21 
1:156902649_C/G  47 
1:189027493_A/G  23 

當我發現我被告知它的類是一個數據框:

class(df.alt.alleles) 
##"data.frame" 

當我查詢維度時,我被告知只有一列,但在查看時看起來有兩列。

dim(df.alt.alleles) 
## 

我想找到的所有實例_並刪除其與之後的一切就在塔中以產生看起來像這樣一個新的數據幀(但對於所有9個萬行):

    AC 
1:123456789   5 
1:139406018   21 
1:156902649   47 
1:189027493   23 

我已經嘗試使用:

sub("_\\S*", "", "df.alt.alleles") 

由於這裏建議:Remove everything after a string in a data frame column with missing values

這將返回一個字符串,其中包含「AC」列中的所有數字。

注意:對不起,如果這是一個可怕的問題,但我是一個完整的R新手,並已經搜索高和低的解釋,似乎很基本的東西。道歉,如果問題格式不正確,我完全是新的,我會採取任何建議!

+1

因爲這似乎是第二列(第一次在系列)實際上是行名。嘗試做'df $ whateverName < - row.names(df)'。而且,也許也是'row.names(df)< - NULL'。然後,您可以在該列上進行操作。 – Gopala

回答

1

在這裏,你可以看到問題和修正,我相信:

df 
       AC 
1:123456789_G/C 5 
1:139406018_A/T 21 
1:156902649_C/G 47 
1:189027493_A/G 23 

df$somename <- row.names(df) 
df 
       AC  somename 
1:123456789_G/C 5 1:123456789_G/C 
1:139406018_A/T 21 1:139406018_A/T 
1:156902649_C/G 47 1:156902649_C/G 
1:189027493_A/G 23 1:189027493_A/G 

row.names(df) <- NULL 
df 
    AC  somename 
1 5 1:123456789_G/C 
2 21 1:139406018_A/T 
3 47 1:156902649_C/G 
4 23 1:189027493_A/G 
+0

非常完美,非常感謝! – emily

0

使用dplyr和tidyr:

library(dplyr) 
library(tidyr) 

df %>% 
    add_rownames("variant") %>% 
    separate(variant, into = c("chr", "bp", "allele"), sep = "_|:", remove = FALSE) 


# Source: local data frame [4 x 5] 
# 
#   variant chr  bp allele AC 
#    (chr) (chr)  (chr) (chr) (int) 
# 1 1:123456789_G/C  1 123456789 G/C  5 
# 2 1:139406018_A/T  1 139406018 A/T 21 
# 3 1:156902649_C/G  1 156902649 C/G 47 
# 4 1:189027493_A/G  1 189027493 A/G 23