1

私はcsv形式で次のテーブルを持っています:

csv 形式のテーブルに次の遺伝子情報があります。

                    1       3       1       2     2         3
1415670_at  1   365.1   293.4   288.9   394.5   312     381.6
1415671_at  2   556.1   584.2   567.8   592.8   471.6   513.1
1415672_at  3   1048.3  763.1   1074.9  852.3   826.1   898.3
1415673_at  4   60.8    51.7    51.6    224     248.4   150.7
1415674_at  5   129.1   107.2   230.4   175.5   250.5   172.4

ご覧のとおり、1、2、および 3 のラベルが付いた列がいくつかあります。Excel で 1 および 2 とは異なる列を削除する VB スクリプトを作成しました。私が持っている質問は、Rのみを使用してそれを行うにはどうすればよいですか? 私の結果のテーブルは次のようになります。

                    1   1       2          2        
1415670_at  1   365.1   293.4   394.5     312       
1415671_at  2   556.1   584.2   592.8   471.6   
1415672_at  3   1048.3  763.1   852.3   826.1   
1415673_at  4   60.8    51.7    224     248.4   
1415674_at  5   129.1   107.2   175.5   250.5   

ちなみに、これは単なる例です。他の列に 4、5、6 というラベルを付けることができますが、1 と 2 というラベルの付いた列のみを保持したいと考えています。

投稿されたソリューションを試しました。つまり、次を使用します。

m<-read.csv("test1.csv")
smallerdat <- m[ grep("^X1$|^X2$|X1\\.|X2\\." , names(m) ) ]

ここで、m は csv 形式のテーブルですが、得られた結果は次のとおりです。

    X1  X1.1        X2      X2.2        
365.1   293.4   394.5     312       
556.1   584.2   592.8   471.6   
1048.3  763.1   852.3   826.1   
60.8    51.7    224     248.4   
129.1   107.2   175.5   250.5

したがって、必要な最初の2つの列を削除しています。それらの列を削除しない方法は? また、元の形式を維持する方法、ヘッダーの 1 と 2 のみを意味し、それらの X ではありません

4

3 に答える 3

2

「indat」という名前のデータフレームにデータを読み込んだ後

 smallerdat <- indat[ grep("^X1|^X2", names(indat) )]

列が 0 ~ 9 以下の場合に機能します。文字値が大きい場合、そのネットで「11」または「21」を取得するため、より複雑なものが必要になる場合があります。

 smallerdat <- indat[ grep("^X1$|^X2$|X1\\.|X2\\." , names(indat) ) ]
于 2012-11-25T21:49:16.973 に答える
0

マノロ、

データをデータ フレームに読み込み、列を削除する必要があります。考慮しなければならない唯一のことは、列名が同じであってはならないということです。

# Your data
data <- read.table(text = "1       3       1       2       2       3
                           365.1   293.4   288.9   394.5   312     381.6
                           556.1   584.2   567.8   592.8   471.6   513.1
                           1048.3  763.1   1074.9  852.3   826.1   898.3
                           60.8    51.7    51.6    224     248.4   150.7
                           129.1   107.2   230.4   175.5   250.5   172.4",
        header=TRUE, sep="", nrows=5)

その後、実行すると

print(data)

あなたは得るでしょう

      X1    X3   X1.1    X2  X2.1  X3.1
1  365.1 293.4  288.9 394.5 312.0 381.6
2  556.1 584.2  567.8 592.8 471.6 513.1
3 1048.3 763.1 1074.9 852.3 826.1 898.3
4   60.8  51.7   51.6 224.0 248.4 150.7
5  129.1 107.2  230.4 175.5 250.5 172.4

X3 および X3.1 という名前の列を削除すると、

data <- data[, !(colnames(data) %in% c("X3","X3.1"))]

そして実行

print(data)

あなたは今得るでしょう

      X1   X1.1    X2  X2.1
1  365.1  288.9 394.5 312.0
2  556.1  567.8 592.8 471.6
3 1048.3 1074.9 852.3 826.1
4   60.8   51.6 224.0 248.4
5  129.1  230.4 175.5 250.5

それが役に立てば幸い!:)

于 2012-11-25T20:56:15.937 に答える