2016-04-08 7 views
1

私はdf.alt.allelesという名前の非常に長いデータフレームを持っているが、このようになります(1~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" 

ディメンションをクエリすると、表示されている列が2つあるように見えますが、1つの列しかないと言われています。

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

は(最初のシリーズでは)2列目に見えるものであるために実際に行の名前。 '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 
関連する問題