2017-10-20 9 views
4

データフレーム内の特定の列に対して最も高い値を与える行を見つける方法がわかりませんデータフレーム内の特定の列に対して最も高い値を持つ行を見つける方法を教えてください。

たとえば以下のようになります。

mtcars 
       mpg cyl disp hp drat wt ... 
Mazda RX4  21.0 6 160 110 3.90 2.62 ... 
Mazda RX4 Wag 21.0 6 160 110 3.90 2.88 ... 
Datsun 710 22.8 4 108 93 3.85 2.32 ... 

私は重量の列に焦点を当て、もう1つはまた、2.88

のマツダRX4性Wagだろう最高値を、持っているかを確認しようとしていますどのように私はベクトルの代わりに名前を使用して特定の値を見つけるのですか? たとえば、Mazda RX4 Wag wt。私はdf[df$Mazda RX4 Wag,df$wt]を試しましたが、私にエラーが出ます。たぶん

おかげ

答えて

0

このような何か:あなたの拳の質問に

which(name.of.datatable == max(name.of.datatable[, 7]), arr.ind = T) 
2

。 2番目の質問に

subset(mtcars, wt == max(wt))[, "wt"] 
[1] 5.424 

mtcars[row.names(mtcars) == "Mazda RX4 Wag", "wt"] 
[1] 2.875 
0

drop = FALSEは、あなたが行あなたは最高のを持っている名前または最低wt

1.重量列の最高値、すなわち、車名を印刷することができます

最大印刷(max()機能を使用)またはhighe st値はwtカラムです。

mtcars[mtcars$wt == max(mtcars$wt), "wt", drop = FALSE] 
#      wt 
# Lincoln Continental 5.424 

OR

YCWによって示唆されているようにwhich.max()を使用してください。

mtcars[which.max(mtcars$wt), "wt", drop = FALSE] 
    #      wt 
    # Lincoln Continental 5.424 

2(min()関数を使用して)最小印刷重量列の最小値

又はwtカラム

mtcars[mtcars$wt == min(mtcars$wt), "wt", drop = FALSE] 
#     wt 
# Lotus Europa 1.513 

OR

の最低値

ycwの提案通りwhich.min()を使用してください。

mtcars[which.min(mtcars$wt), "wt", drop = FALSE] 
#     wt 
# Lotus Europa 1.513 
+1

ありがとうございました。私もそれを観察していました。答えを更新しました。 –

+0

@ycw 'which.max'は使用しません。ありがとうございます。 –

+0

魅力的な作品! 'which.max'関数です。 –

0

あなたが最大値の行番号をしたい場合は、which.max()を使用します。

> which.max(mtcars$wt) 
[1] 16 

その行のすべての情報を取得するには、あなたのデータフレームをサブセットするためにそれを使用します。

> mtcars[which.max(mtcars$wt),] 
        mpg cyl disp hp drat wt qsec vs am gear carb 
Lincoln Continental 10.4 8 460 215 3 5.424 17.82 0 0 3 4 

データの要素を選択します。名前でフレームを文字列として挿入するだけです。複数の行または列が必要な場合は、c()のベクトルに配置する必要があります。

> mtcars['Mazda RX4 Wag','wt'] 
[1] 2.875 
関連する問題