0

非常に長いデータセットと、データが間違っている ID 値の比較的短いリストがあります。以下は機能しますが、私の wrong_IDs ベクトルは実際にははるかに大きくなっています。

wrong_IDs <- c('A1', 'B3', 'B7', 'Z31')
df$var1[df$var2 == 'A1' | df$var2 == 'B3' | df$var2 == 'B7' | df$var2 == 'Z31'] <- 0L

これは非常に基本的なように見えますが、これをコンパクトに書く方法は見つかりませんでした。助けてくれてありがとう

4

2 に答える 2

1

%in% 演算子を使用して、データを wrong_IDs と比較できます

df <- data.frame("var1" = 101:120, "var2" = c(1:20))
wrong_ids <- c(3, 5, 7)
df$var1[df$var2 %in% wrong_ids] <- 0

ここで、df$var2 %in% wrong_ids は、選択した行 (ここでは行 3、5、および 7) に「ゼロに設定」操作のみを適用する TRUE/FALSE ブール値ベクトルを提供します。

于 2020-05-05T14:02:34.990 に答える