[解決済み】各グループの上位3要素を計算する際に「数値型、論理型、複合型でのみ可能な演算」を回避する方法
2022-02-18 03:23:58
質問
4列の行列(AOD_median)を持っています。私は各年度の3つの最大のデータ要素(AODによって)を見つけ、これらの要素に関連する月を決定したい。これは私のデータです。
date month year AOD
1-Mar-00 3 2000 0.226
1-Apr-00 4 2000 0.454
1-May-00 5 2000 0.328
1-Jun-00 6 2000 0.314
1-Jul-00 7 2000 0.354
1-Aug-00 8 2000 0.282
1-Sep-00 9 2000 0.278
1-Oct-00 10 2000 0.183
1-Nov-00 11 2000 0.173
1-Dec-00 12 2000 0.21
1-Jan-01 1 2001 0.171
1-Feb-01 2 2001 0.281
1-Mar-01 3 2001 0.241
1-Apr-01 4 2001 0.269
1-May-01 5 2001 0.292
1-Jun-01 6 2001 0.222
1-Jul-01 7 2001 0.322
1-Aug-01 8 2001 0.268
1-Sep-01 9 2001 0.276
1-Oct-01 10 2001 0.169
1-Nov-01 11 2001 0.16
1-Dec-01 12 2001 0.15
であり、これは
dput
のテキストが表示されます。
structure(list(X1 = c("1-Mar-00", "1-Apr-00", "1-May-00", "1-Jun-00",
"1-Jul-00", "1-Aug-00", "1-Sep-00", "1-Oct-00", "1-Nov-00", "1-Dec-00",
"1-Jan-01", "1-Feb-01", "1-Mar-01", "1-Apr-01", "1-May-01", "1-Jun-01",
"1-Jul-01", "1-Aug-01", "1-Sep-01", "1-Oct-01", "1-Nov-01", "1-Dec-01"
), X2 = c(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12), X3 = c(2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
2001, 2001, 2001, 2001, 2001), X4 = c(0.226, 0.454, 0.328, 0.314,
0.354, 0.282, 0.278, 0.183, 0.173, 0.21, 0.171, 0.281, 0.241,
0.269, 0.292, 0.222, 0.322, 0.268, 0.276, 0.169, 0.16, 0.15)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -22L))
この操作を以下のコードでやってみました。
for(i in 2000:2001) {(d <- as.matrix(AOD_median[which(AOD_median[,3]==i),]))&
(order_AOD <- d[order(d[,4], decreasing = TRUE)])&
print(order_AOD[1:3,2])}
こんな結果が出ると思っていました。
"4" "7" "5"
"7" "2" "9"
その代わり、こんなエラーが出た。
Error in (d <- as.matrix(AOD_median[which(AOD_median[, 3] == i), ])) & :
operations are possible only for numeric, logical or complex types
解決するには?
特定のエラーは、あなたが
&
はRの論理演算子であるため、これは機能しません。
;
または改行文字で行を区切ります。
しかし、一歩下がって、あなたはデータセットの各年について、上位3ヶ月を計算しようとしているのです。
AOD
のフィールドがあります。を使っているので
{コード
のようにすると、よりスムーズに行えます。
dplyr
3ヶ月が(AODによって)順番が狂ってもいいのなら、ドロップすればいいのでは?
AOD_median %>%
arrange(-AOD) %>%
group_by(year) %>%
top_n(3, AOD) %>%
select(year, month)
# A tibble: 6 x 2
# Groups: year [2]
# year month
# <dbl> <dbl>
# 1 2000 4
# 2 2000 7
# 3 2000 5
# 4 2001 7
# 5 2001 5
# 6 2001 2
という行があります。
データです。
arrange(-AOD)
関連
-
[解決済み】"置換する項目数が置換長の倍数でない "と表示されるのはなぜですか?
-
[解決済み】xtsオブジェクトでエラー: "antempt to set 'colnames' on the object with less than two dimension "を克服する方法
-
[解決済み】model.frame.defaultでのエラー:変数の長さが異なる
-
[解決済み】scale_color_manual()が動作しない件
-
[解決済み】R - if文の引数の長さが0である。
-
[解決済み] テスト
-
[解決済み】GLM解析での警告
-
[解決済み】rbind(deparse.level, ...)でエラー:引数の列の数がRにマッチしていない
-
[解決済み】Rで、Error: ggplot2 doesn't know how to handle of data of class numericに対処する。
-
[解決済み】randomForestの実行予測で「NA/NaN/Inf in foreign function call (arg 7)」をなくすには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:'dimnames' [2]の長さが配列の範囲と等しくない [終了しました]
-
[解決済み】xtsオブジェクトでエラー: "antempt to set 'colnames' on the object with less than two dimension "を克服する方法
-
[解決済み】基本 - T-検定 -> グループ化因子は正確に2水準でなければならない
-
[解決済み】lis[[i]]のエラー:1つ未満の要素を選択しようとした場合
-
[解決済み】x[[i]]でのエラー:レベル2で再帰的インデックス作成に失敗した
-
[解決済み】 colMeans(x, na.rm = TRUE) のエラー : KNN分類では 'x' は数値でなければならない
-
[解決済み】Rで文字ベクトルから引用符を削除する
-
[解決済み】R: predict() の数値 'envir' 引数が長さ1でない。)
-
[解決済み】R 置換する項目数が置換長の倍数でない/しかし結果は正しい
-
[解決済み】起動時にパーをデフォルト値にリセットする方法