2

データ フレーム (dat) に av1 av2 av3…av144 という名前の変数のリストがあります。これらを main1 main2 main3… main144 などの別の一連の変数に再コーディングしたいと思います。

dat$main1<-ifelse (dat$av1==5 or dat2$av1==8 or dat$av1==6,10,0)
dat$main2<-ifelse (dat$av2==5 or dat2$av2==8 or dat$av2==6,10,0)
#…
dat$main144<-ifelse (dat1$av144==5 or dat$av144==8 or dat$av144==6,10,0)

同じ行を144回書き直さずに、このifelseコマンドを2セットの変数に適用する方法を教えてください。列名で抽出しようとして「grep」の実験に失敗しましたが、間違った方向に進んでいたと思います…</p>

事前にどうもありがとうございました、

4

2 に答える 2

0

これは同様のアプローチであり、説明のために再現可能なデータがいくつかあります。条件を満たす dat 内の場所を見つけ、結果 df 内のそれらの値を 10 に変更します。

set.seed(1)
dat <- data.frame( av1 = sample(8) , av2 = sample(8) , av3 = sample(8) )
#  av1 av2 av3
#1   3   6   6
#2   8   1   7
#3   4   2   3
#4   5   7   4
#5   1   3   5
#6   7   8   1
#7   2   4   2
#8   6   5   8


#  Initialise a df to hold results, fill with FALSE values (0)
out <- `[<-`(dat , , , 0 )

#  Find where values should be TRUE
ind <- sapply( dat , function(x) x %in% c( 5 , 6 , 8 ) )

#  Change to 10
out[ ind ] <- 10

#  Change names if desired
names(out) <- gsub( "av" , "main" , names(dat) )
#  main1 main2 main3
#1     0    10    10
#2    10     0     0
#3     0     0     0
#4    10     0     0
#5     0     0    10
#6     0    10     0
#7     0     0     0
#8    10    10    10
于 2013-09-09T22:25:08.583 に答える