簡體   English   中英

如何在 r 中使用虛擬變量創建分類變量?

[英]How do you create categorical variables using dummy variables in r?


案例 1:0、0、0、0、1、1、1、1、0、0

案例 2: 1, 1, 0, 0, 1, 0, 0, 0, 1, 0

案例 3:0、1、0、0、0、1、1、0、0、1

我想從上表中得到以下向量。

答案:2、混合、0、0、混合、混合、混合、1、2、3

r如何解決上述問題?

我自己做了function來解決上面的問題。

我希望它能幫助那些和我有同樣問題的人。

dummy_to_cate <- function(mydata,column_area){
  result_vec <- NA
  vec_q=NA
  colname <- colnames(mydata)
  
  result_vec[is.na(mydata[,column_area[1]])==FALSE]<-paste(colname[1])
  for (i in column_area[-1]) {
    vec_q[is.na(mydata[,column_area[i]])==FALSE] <-1
    vec_q[is.na(mydata[,column_area[i]])==TRUE] <-0
    result_vec[vec_q==1 & is.na(mydata[,column_area[1]])==TRUE]<- paste(colname[i])
  }
   df<-is.na(mydata[,column_area])==FALSE
   result_vec[rowSums(df)>= 2]<-'mix'
  
  return(result_vec)
}

也許你可以試試下面的代碼

sapply(asplit(rbind(c1, c2, c3), 2), function(x) {
  u <- which(x == 1)
  ifelse(length(u) == 0, 0, ifelse(length(u) == 1, u, "mix"))
})

這使

[1] "2"   "mix" "0"   "0"   "mix" "mix" "mix" "1"   "2"   "3" 

數據

c1 <- c(0, 0, 0, 0, 1, 1, 1, 1, 0, 0)
c2 <- c(1, 1, 0, 0, 1, 0, 0, 0, 1, 0)
c3 <- c(0, 1, 0, 0, 0, 1, 1, 0, 0, 1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM