3

私は R がまったく初めてで、次の問題があります。文字 A を持つ新しい列 V4 を作成したい V2 の IF 値のみが 1.2 より大きいか等しい

これは私のテスト データ フレーム df です。

    V1  V2  V3
1   ABC 1.2 4.3
2   CFS 2.3 1.7
3   dgf 1.3 4.4

それが私がしたことです

df$V4<-NA

for(i in 1:nrow(df)) {   
 xy=df[i,]$V2   
 if (grepl(>=1.2,xy)) 
 df[i,]$V4 ="A"      
}  
}

ちょうど 1.2 が必要な場合は問題なく動作しますが、>= は動作しないようです。誰にも理由はありますか?

4

1 に答える 1

3

この例ifelseでは適切と思われます:

df$V4 <- ifelse( df$V2 >= 1.2 , "A" , NA )

これにより、1.2NAではない値が得られます。>=あなたの例では、すべてのdf$V2が以上であるため、次の1.2ようになります。

 df
#   V1  V2  V3 V4
#1 ABC 1.2 4.3  A
#2 CFS 2.3 1.7  A
#3 dgf 1.3 4.4  A

ただし、1.2 より小さい値を指定すると...

df
#   V1  V2  V3
#1 ABC 1.2 4.3
#2 CFS 2.3 1.7
#3 dgf 1.0 4.4

df$V4 <- ifelse( df$V2 >= 1.2 , "A" , NA )
df
#   V1  V2  V3   V4
#1 ABC 1.2 4.3    A
#2 CFS 2.3 1.7    A
#3 dgf 1.0 4.4 <NA>

は、文字列ではなくNA実際に (欠損値など) であることを示すために、角括弧で囲まれています。NA'NA'

データセットに多数の行がある場合は、サブセット メソッドの比較と置換がより高速になる可能性があります。

 df$V4 <- NA
 df$V4[ df$V2 >= 1.2 ] <- "A"
于 2013-05-01T09:19:07.170 に答える