0

いくつかの因子変数を再コーディングする必要がありますが、失敗し続けています。

私のデータが次のようになっているとします。

df <- data.frame(a  = c("1","2","","Other"),
                 b  = c("3","","Other","Other"),
                 v1 = c("no","no","yes","yes"),
                 v2 = c("no","yes","no","no"),
                 v3 = c("no","yes","yes","no"))
df$a <- as.character(df$a)
df$b <- as.character(df$b)

df

>       a     b  v1  v2  v3
> 1     1     3  no  no  no
> 2     2        no yes yes
> 3       Other yes  no yes
> 4 Other Other yes  no  no

私が欲しい

v1になる"yes" if (a=="1" | b=="1")

v2"yes" if (a=="2" | b=="2")となる

v3なる"yes" if (a=="3" | b=="3")

したがって、パターンは次のとおりです。

v#なる"yes" if (a="#" | b="#")

2 つのループを使用して R ベースを試しましたが、うまくいきませんでした:

 for(i in c("a","b")){
   for(j in as.character(1:3)){
   df[which(df[,i]==j),][,c(paste("v",j,sep=""))] <- "yes"
   }}

を使用してこれを行いたいdplyr::mutateのですが、方法がわかりません...

4

2 に答える 2

-1

この場合、変数の数が比較的少ないため、ifelse の単純なグループで問題を解決できます。

df$v1<- ifelse(df$a==1 |df$b==1,"yes","no")
df$v2<- ifelse(df$a==2 |df$b==2,"yes","no")
df$v3<- ifelse(df$a==3 |df$b==3,"yes","no")
于 2016-05-11T13:52:12.447 に答える