質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

3回答

851閲覧

Rを使って特定のデータを削除したい

hana.serebu

総合スコア0

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2023/04/24 07:27

実現したいこと

Rを使って特定のデータを削除したい

前提

行列に86万ものデータがあるデータセットの中から、3列目の「chrX」「chrY」という名前が付いている行のデータだけを削除したいのですが、削除するコードやパッケージがわかりません。

教えていただけませんでしょうか。

試したこと

subsetのパッケージを使い、(-chrX,-xhrY)でスクリプトを書いてもできませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

tidyverse パッケージの dplyr::filter() を使う方法もあります。
なお,列名(c)ではなく列番号(3)で指定するなら df[[3]] を使います。

R

1library(tidyverse) 2 3N <- 860000 4flag <- paste0("chr", c("V", "W", "X", "Y")) 5set.seed(127) 6 7df <- data.frame(a = runif(N), b = runif(N), 8 c = sample(flag, N, replace = TRUE)) 9head(df, n = 10) 10## a b c 11## 1 0.28510789 0.6525932 chrX 12## 2 0.06156252 0.4604521 chrV 13## 3 0.20760469 0.3686386 chrX 14## 4 0.14384433 0.5446151 chrX 15## 5 0.31067442 0.1983991 chrY 16## 6 0.74434070 0.7339179 chrX 17## 7 0.50072562 0.6571588 chrV 18## 8 0.26197449 0.9620552 chrW 19## 9 0.79383064 0.3612686 chrY 20## 10 0.80961544 0.3258545 chrX 21 22df2 <- df |> 23 dplyr::filter(!(c %in% c("chrX", "chrY"))) 24 ## dplyr::filter(!(df[[3]] %in% c("chrX", "chrY"))) 25head(df2) 26## a b c 27## 1 0.06156252 0.4604521 chrV 28## 2 0.50072562 0.6571588 chrV 29## 3 0.26197449 0.9620552 chrW 30## 4 0.84055898 0.3127375 chrV 31## 5 0.36470927 0.8804756 chrV 32## 6 0.71383384 0.8528818 chrV

投稿2023/06/06 15:08

little_street

総合スコア437

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xebme

2023/06/06 22:30

副作用のない方法
guest

0

データフレーム[-n, ]

  • which ( ... %in% ...)を使用して複数の行インデックスを求めます。
  • -c(行インデックス, ...)を指定して除外します。

R

1dframe[-which(dframe[,3] %in% c("chrX","chrY")), ]

投稿2023/05/31 07:27

xebme

総合スコア1109

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xebme

2023/05/31 07:30

dframe[,3]はベクトルです。データフレームではありません。
guest

0

いくつかやり方は考えられますが、次のようにするとデータフレームdf1のうち3列めが"chrX"ではない行のみが選択されてdf2に格納されます。

df2 <- df1[df1[,3]!="chrX", ]

投稿2023/04/27 17:08

KojiDoi

総合スコア13727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問