Rのこれら2つの関数の違いがわかりません。data.frameがあり、特定の列の重複した値に対応する行を削除したいと思います。
Acc Probe Coord_homol
1 NR_004442.1 225541_at~122 391
2 NM_028059.2 241348_at~444 4642
3 NM_028059.2 241348_at~468 4666
4 NM_001114 212306_at~4357 5034
5 NM_010573.2 230472_at~402 1987
6 NM_029633.2 212306_at~4357 4289
7 NM_00108196 212306_at~4357 4292
8 NM_029891.2 205004_at~3421 2963
9 NM_029891.2 205004_at~3635 3173
10 NM_007892.2 221586_s_at~1356 1257
11 NR_036613.1 208672_s_at~829 1301
12 NR_036613.1 208673_s_at~1472 1854
13 NM_011078.3 212726_at~3872 5175
14 NM_011078.3 212726_at~3887 5190
15 NM_013915.3 207164_s_at~1523 2911
この場合、プローブは行6と同じであるため、行7を削除します(同じプローブを持つ行は連続している必要はありません)。
私は最初にunique()を試しましたが、後で重複していることがわかりました。ただし、次のコマンドの場合
dat[!duplicated(dat$probe),]
dat[unique(dat$probe),]
結果のdata.frameに同じ数の行を指定すると、結果は同じではありません。
次のような、もっと単純なケースを試してみました。
単純なdata.frame:
> dat
probe val
1 aaa 10
2 bbb 12
3 ccc 45
4 ddd 32
5 aaa 42
6 eee 10
7 fff 13
8 ccc 85
9 aaa 75
10 ddd 64
!duplicated()の使用:それは私がやりたいことのようです。
dat[!duplicated(dat$probe),]
probe val
1 aaa 10
2 bbb 12
3 ccc 45
4 ddd 32
6 eee 10
7 fff 13
unique()の使用:
dat[unique(dat$probe),]
私は得る:
probe val
1 aaa 10
2 bbb 12
3 ccc 45
4 ddd 32
5 aaa 42
6 eee 10
私が欲しいものではありません。
しかし、正確にunique()は何をしているのでしょうか?
ご協力いただきありがとうございます。