2017-11-09 27 views
-1

dataのデータフレームは、A1, A2, A3であるとします。私は、列のいずれかが0であるかどうかをチェックしたいと思います。あなたは、変数名にインデックスを使用するにはどうすればよいデータフレーム内の列の名前

 for (i in 1:3) 
     { 
      if (data$Ai == 0) 
       { 
       print("TRUE") 
       } 
     } 

:このような何かを行う方法がある

if (data$A1 == 0 || data$A2 == 0 || data$A3 == 0) 
    { 
     print("TRUE") 
    } 

:代わりに次のことをやっての?

+0

_row_ごとにゼロに等しい列があるかどうかを確認しようとしていますか? – useR

答えて

1

$の構文で変数を使用することはできません。より良いだけで(あなたが行うことができます)文字列として列名を使用してdata.frameをサブセットして、いずれかが0

any(data[, paste0("A", 1:3)]==0) 
+0

元のデータセットにインジケータが必要な場合は、これを行うことができます。その後、 'data_subset $ dummy < - rep(1、nrow(data))'を作成し、サブセット化されたデータを元に戻します。 – seeellayewhy

0

あるかどうかをチェックしあなただけの任意の要素かどうかを知りたいかどうか私には明確ではありませんします列のすべての要素が0に等しい場合は、列は0に等しくなります。つまり、私の例/答えでは、あなたが望むものを探すために関数の引数を変更することができます。

ループを書くよりも簡単で高速なので、私はapply関数を使用します。最初の引数は(あなたが望むもの)秒の列の行の1、2である、あなたのデータフレームです:

df <- data.frame(A=c(1,0,3),B=c(3,3,3),C=c(4,3,0)) # Replace with your data 

# For if you just want to know if each column contains a 0 
apply(df,2,FUN=function(x) max(x==0,na.rm=T)) 

# For if you just want to know how many 0s are in each column 
apply(df,2,FUN=function(x) sum(x==0)) 

# For if you want to know if all entries in each column are 0 
apply(df,2,FUN=function(x) all(x==0)) 

# etc. 

これらはあなたが答えは名前で列ごとにあるものを見ることができますという名前のベクトルを返します。

こちらがお役に立てば幸いです。

関連する問題