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

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

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

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

Q&A

解決済

2回答

457閲覧

特定の値の組み合わせのみの列を特定する方法

sonsou4

総合スコア1

R

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

0グッド

0クリップ

投稿2021/11/01 07:34

編集2021/11/02 11:30

前提・実現したいこと

大量のダミー変数をリコード(値の再設定)しようとしています。
5000*5000の行列のデータフレーム(1行目は変数名として処理した)があり、
その中から、例えば[1,2,9]の値のみを含む列(=変数)を抽出したい。

また、データフレームには[1,2,3,4,5,6,7,8,9・・・]や
[20,35,10,8,66,・・・]といった様々な値を持つ列がある

whichを利用しようとしたが、
上記でいう[1,2,9]を部分に持つすべての列がでたりして、
「特定の値の組み合わせのみ」をもつ列をどうにか抽出できないか悩んでいる

ここでは例えば[1,2,9]のみを持つ列は抽出し、[1,2,4,7,9]を持つ列は
除くような操作がしたい

そうして抽出した特定の値のみを持つ列群をまとめてリコードすることを目的としている

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

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

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

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

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

guest

回答2

0

ベストアンサー

r

1> df <- data.frame(replicate(10,sample(1:10,10,rep=TRUE))) 2> df 3 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 41 3 5 3 10 7 4 2 8 1 2 52 6 9 8 8 8 4 7 1 10 1 63 10 1 4 5 9 5 10 7 9 9 74 2 5 4 6 6 0 0 6 4 1 85 3 10 2 8 4 2 2 4 4 1 96 0 10 3 4 10 3 8 2 4 10 107 9 8 9 7 6 3 1 4 4 3 118 2 5 9 10 6 7 4 10 8 5 129 6 10 10 8 3 5 4 1 8 10 1310 7 4 1 6 9 8 0 2 2 6 14 15> colnames(df)[sapply(df, function(c){all(c(1, 2, 9) %in% c)})] 16[1] "X3" "X9" "X10"

which を使うと良いかもしれません。

投稿2021/11/01 08:12

編集2021/11/02 11:26
melian

総合スコア20655

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

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

0

値から列を特定するようなコード

どこかの行の値が8であるような列を選び出す例です。

> b <- matrix(c(1,3,6,9,6,10,8,10,9,5,2,3,5,6,7,5,1,3,6,8,2,2,4,5,10,4,5,6,5,4,6,8,2,3,5,6,0,1,3,2,1,5,3,6,7), ncol=5) > b [,1] [,2] [,3] [,4] [,5] [1,] 1 5 6 6 0 [2,] 3 2 8 5 1 [3,] 6 3 2 4 3 [4,] 9 5 2 6 2 [5,] 6 6 4 8 1 [6,] 10 7 5 2 5 [7,] 8 5 10 3 3 [8,] 10 1 4 5 6 [9,] 9 3 5 6 7 > cols1 <- sapply(1:ncol(b), function(x){any(b[,x]==8)}) > cols1 [1] TRUE FALSE TRUE TRUE FALSE > b[,cols1] [,1] [,2] [,3] [1,] 1 6 6 [2,] 3 8 5 [3,] 6 2 4 [4,] 9 2 6 [5,] 6 4 8 [6,] 10 5 2 [7,] 8 10 3 [8,] 10 4 5 [9,] 9 5 6 > b[,cols1] <- NA > b [,1] [,2] [,3] [,4] [,5] [1,] NA 5 NA NA 0 [2,] NA 2 NA NA 1 [3,] NA 3 NA NA 3 [4,] NA 5 NA NA 2 [5,] NA 6 NA NA 1 [6,] NA 7 NA NA 5 [7,] NA 5 NA NA 3 [8,] NA 1 NA NA 6 [9,] NA 3 NA NA 7

投稿2021/11/01 08:00

KojiDoi

総合スコア13692

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問