[英]How do convert a categorical variable into multiple dummy variables in 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.