データセットの選択されたグループの列に対して新しいラベル付きの表示列を作成する関数を作成しようとしています。2つのベクトルをループする列を作成する
が# Data Set
A = as.factor(c(0,2,1,0))
B = as.factor(c(2,NA,1,0))
C = as.factor(c(1,0,NA,0))
D = as.factor(c(NA,2,0,1))
dat = data.table(A, B, C, D)
現在、私は私がしたい各列のためにこれをやっている:
# What I'm currently doing (expected output of loop matches these columns)
attach(dat)
VAR = B
dat$b.test[VAR == "0"] <- "0"
dat$b.test[VAR == "1" | VAR == "2"] <- "1"
VAR = C
dat$c.test[VAR == "0"] <- "0"
dat$c.test[VAR == "1" | VAR == "2"] <- "1"
VAR = D
dat$d.test[VAR == "0"] <- "0"
dat$d.test[VAR == "1" | VAR == "2"] <- "1"
detach(dat)
私はすべての列を含むベクトル上で実行されるループのために作成することができるはずですように思えます私はロジックが(B、C、D)で実行され、各ベクトル内の同じ位置にある別のベクトル(b2、c2、d2)から新しい名前を呼び出すようにします。新しい列Xで
試み方法1つの
# Failed method 1
attach(dat)
new.var = c(b2, c2, d2)
cur.var = c(B, C, D)
l = length(cur.var)
for(i in 1:l){
X = cur.var[i]
VAR = cur.var[i]
dat$X[VAR == "0"] <- "0"
dat$X[VAR == "1" | VAR == "2"] <- "1"
}
detach(dat)
結果
試み方法2
# Failed method 2
new.var = c(dat$b2, dat$c2, dat$d2)
cur.var = c(dat$B, dat$C, dat$D)
l = length(cur.var)
for(i in 1:l){
new.var[i] = ifelse(new.var[i] == "0", "0",
ifelse(new.var[i] == "1" | "2", "1", NA)
)
}
試してみて、これを行うためのさまざまな方法がありますか?
ようこそ。 dfに希望の出力を提供してください。 –