[解決済み] Rで比率を計算する
2022-02-10 21:09:06
質問
このデータセットがある場合
Name <- c("Bill", "Ben", "Lisa", "Maya")
Xnum <- c(5, NA, 10, NA)
Ynum <- c(10, 5, NA, NA)
MyData <- data.frame(Name, Xnum, Ynum)
というデータセットを得ることができます。
`print(MyData)
Name Xnum Ynum
1 Bill 5 10
2 Ben NA 5
3 Lisa 10 NA
4 Maya NA NA`
XをYで割ると、欲しい比率が得られる。これは簡単です。
MyData$Ratio <- MyData$Xnum / MyData$Ynum
が、問題はNAが含まれる値です。このような場合、次のような要件があります。
`If Xnum == NA AND Ynum == NA
Ratio = 1
Else if Xnum == NA AND Ynum >= 0
Ratio = 1
Else if Xnum >= 0 AND Ynum == NA
Ratio = 0
Else
Ratio = Xnum / Ynum`
XnumとYnumを渡して比率を返す関数として試してみましたが、私が期待するようなことはできません。この関数は
`determine_ratios <- function( PrevTotal, AllTotal ) {
if ( (is.na(PrevTotal)) && (is.na(AllTotal)) ) {
return(as.double(1.0))
} else if ((PrevTotal >= 0) && (is.na(AllTotal)) ) {
return(as.double(1.0))
} else if ((is.na(PrevTotal)) && (AllTotal >= 0) ) {
return(as.double(0.0))
} else {
return(as.double(PrevTotal / AllTotal ))
}
}`
そして、このように呼んでいます。
`MyData$Ratios <- determine_ratios(MyData$Xnum, MyData$Ynum)`
私が得た出力はこうです。
`print(MyData)
Name Xnum Ynum Ratios
1 Bill 5 10 0.5
2 Ben NA 5 NA
3 Lisa 10 NA NA
4 Maya NA NA NA`
期待される出力は次のようになる。
`print(MyData)
Name Xnum Ynum Ratios
1 Bill 5 10 0.5
2 Ben NA 5 1
3 Lisa 10 NA 0
4 Maya NA NA 1`
ありがとうございます。
解決方法は?
使用方法
case_when
から
dplyr
パッケージを使用します。
library(dplyr)
MyData$Ratios <-
case_when(
is.na(MyData$Xnum) & is.na(MyData$Ynum) ~ 1,
is.na(MyData$Xnum) & MyData$Ynum >= 0 ~ 1,
MyData$Xnum >= 0 & is.na(MyData$Ynum) ~ 0,
TRUE ~ MyData$Xnum / MyData$Ynum
)
関連
-
[解決済み】基本 - T-検定 -> グループ化因子は正確に2水準でなければならない
-
[解決済み】エラー。Rの次元数が正しくない
-
[解決済み] 変数の型(リスト)が無効です
-
[解決済み】Rで「パッケージ'FILE_PATH'のインストールで終了ステータスが0でなかった」。
-
[解決済み】apply()とadply()の出力が異なる件)
-
[解決済み】Rで立方根と対数変換をする
-
[解決済み】RでKNN。trainとclassは長さが違う」?
-
[解決済み] lmer エラー: グループ化係数は観測数未満でなければならない
-
[解決済み】「Error in stripchart.default(x1, ...) : invalid plotting method」エラーを回避する方法は?
-
[解決済み】移動平均の計算
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】xtsオブジェクトでエラー: "antempt to set 'colnames' on the object with less than two dimension "を克服する方法
-
[解決済み] 変数の型(リスト)が無効です
-
[解決済み】apply()とadply()の出力が異なる件)
-
[解決済み】Rのメモリ管理/サイズn Mbのベクトルを割り当てられない
-
[解決済み] lmer エラー: グループ化係数は観測数未満でなければならない
-
[解決済み】R: predict() の数値 'envir' 引数が長さ1でない。)
-
[解決済み】 eval(expr, envir, enclos) でのエラー : オブジェクトが見つかりません。
-
[解決済み】.External.graphics Rでエラーが発生しました。
-
[解決済み】dplyr: "Error in n(): 関数は直接呼ばれるべきではありません"
-
[解決済み】"object not interpretable as a factor "というエラーの意味は?[クローズド]