У меня есть набор данных "data" с 7 строками и 4 столбцами следующим образом:
var1 var2 var3 var4
A C
A C B
B A C D
D B
B
D B
B C
Я хочу создать следующую таблицу "Мат" на основе имеющихся у меня данных:
A B C D
1 1
1 1 1
1 1 1 1
1 1
1
1 1
1 1 1
По сути, я взял уникальные элементы из исходных данных и создал матрицу "Mat", где число строк в Mat = число строк в Data, а количество столбцов в "Mat" = количество уникальных элементов в Data (что есть, A, B, C, D)
Я написал следующий код в R:
rule <-c("A","B","C","D")
mat<-matrix(, nrow = dim(data)[1], ncol = dim(rule)[1])
mat<-data.frame(mat)
x<-rule[,1]
nm<-as.character(x)
names(mat)<-nm
n_data<-dim(data)[1]
for(i in 1:n_data)
{
for(j in 2:dim(data)[2])
{
for(k in 1:dim(mat)[2])
{
ifelse(data[i,j]==names(mat)[k],mat[i,k]==1,0)
}
}
}
Я получаю все NA в "циновке". Кроме того, время выполнения слишком велико, потому что в моем исходном наборе данных у меня 20 000 строк и 100 столбцов в «Mat».
Любой совет будет высоко оценен. Спасибо!