同じ行にも2番目の列に一定の値がある場合のみ、少なくとも1つの行が1に等しい列を選択しようとしています。私はこれをdplyrを使って実現する方が好きですが、計算上効率的なソリューションは大歓迎です。dplyrを使用して複数の列の行値に基づいて列を選択
例:
rand <- function(S) {set.seed(S); sample(x = c(0,1),size = 3, replace=T)}
df <- data.frame(a1=rand(1),a2=rand(2),a3=rand(3),b=c("A","B","A"))
:値が1とカラムB == "B"
例のデータであり、A3は、少なくとも一つの列を含む
選択列A2、A1のうち、
入力データ:
a1 a2 a3 b
1 0 0 0 A
2 0 1 1 B
3 1 1 0 A
所望の出力:
私は以下のコードで正しい出力を得ることができましたが、これは非常に非効率的な解決策であり、非常に大きなデータフレーム(365,000行×314列)で実行する必要があります。
df %>% select_if(function(x) any(paste0(x,.$b) == '1B'))
データを長い形式に変換してください。これが難しいと思うのは、ワイドフォーマットで計算しようとしているからです。 –
@docendodiscimusヒントのおかげで、それは確かに簡単です! –