データフレームの代替列の値を1未満の0に変更したいとします。特定の値を持つデータフレームの列を抽出する
abc 1 ghf 3
def 3 ftr 6
scf 0.2 ugh 1
2番目と3番目の列の値がすべて1にならないようにする必要があります。
Rで行う方法はありますか?
データフレームの代替列の値を1未満の0に変更したいとします。特定の値を持つデータフレームの列を抽出する
abc 1 ghf 3
def 3 ftr 6
scf 0.2 ugh 1
2番目と3番目の列の値がすべて1にならないようにする必要があります。
Rで行う方法はありますか?
この実際に動作し、その単純さを改善することは困難であり得る:
df[ df<1 ] <- 0
代替アプローチ(あまりコンパクト):arr.ind=TRUE
と共に使用される行の2列の行列を返し、条件がTRUE
の列。あなたは[<-.data.frame
でこれを使用することができますが、それは、数値指標として行われなければ
idxs <- which(df <1, arr.ind=TRUE)
#Warning messages:
#1: In Ops.factor(left, right) : < not meaningful for factors
#2: In Ops.factor(left, right) : < not meaningful for factors
### Perfectly safe to ignore the warning
df[ idxs[,1], idxs[,2] ] <- 0
df
#------------------
V1 V2 V3 V4
1 abc 1 ghf 3
2 def 3 ftr 6
3 scf 0 ugh 1
あなたはすぐにdput(myData)
使用することができ、出力はその変数に割り当てることができる形式でデータを与えた場合、それが役立つだろう:
> df <- structure(list(V1 = structure(1:3, .Label = c("abc", "def", "scf"
), class = "factor"), V2 = c(1, 3, 0.2), V3 = structure(c(2L, 1L,
3L), .Label = c("ftr", "ghf", "ugh"), class = "factor"), V4 = c(3L,
6L, 1L)), .Names = c("V1", "V2", "V3", "V4"), row.names = c(NA,
-3L), class = "data.frame")
> df
V1 V2 V3 V4
1 abc 1 ghf 3
2 def 3 ftr 6
3 scf 0.2 ugh 1
あなたは第二と第三のすべての値」と言います列... "しかし、おそらく"第二と第四... "を意味する。
> df$V2 <- ifelse(df$V2 < 1, 0, df$V2)
> df$V4 <- ifelse(df$V4 < 1, 0, df$V4)
> df
V1 V2 V3 V4
1 abc 1 ghf 3
2 def 3 ftr 6
3 scf 0 ugh 1
もっと?ifelse
を参照してください、私はこれはすでに助けるべきだと思う:ここで私はどうなるのかです。
おかげで多くのことを必要とします。あなたのやり方では本当に簡単でした。 – user1021713