Преобразование фиктивной переменной в фактическое значение

Я работал над набором данных, который представлен следующим образом:

P1  P2  P3  P4  P5
0   2   1   0   1
0   1   0   0   0
0   0   0   3   0 
0   0   0   1   1
0   0   5   0   0
1   1   0   0   0

Я пытаюсь преобразовать его в строку в R, где фиктивная переменная не равна 0, например:

P2,P3,P5
P2
P4
P4,P5
P3
P1,P2

Я попытался сделать следующее: Переписать фиктивную переменную в упорядоченный коэффициент, однако я не получаю несколько элементов. Я счастлив создать новую таблицу транзакций, в которой нет имен столбцов. Я надеюсь запустить анализ корзины для сгенерированного набора данных.

Спасибо

2 ответа

Ты можешь попробовать:

apply(df,1,function(x) toString(names(df)[as.logical(x)]))
#[1] "P2, P3, P5" "P2"         "P4"         "P4, P5"     "P3"         "P1, P2" 

Данные:

df = structure(list(P1 = c(0L, 0L, 0L, 0L, 0L, 1L), P2 = c(2L, 1L, 
0L, 0L, 0L, 1L), P3 = c(1L, 0L, 0L, 0L, 5L, 0L), P4 = c(0L, 0L, 
3L, 1L, 0L, 0L), P5 = c(1L, 0L, 0L, 1L, 0L, 0L)), .Names = c("P1", 
"P2", "P3", "P4", "P5"), class = "data.frame", row.names = c(NA, 
-6L))   

Или же

A <- matrix(c(0,1,0,1,
              2,0,0,3,
              1,2,1,5), nrow=3, ncol=4)
colnames(A) <- paste("P",1:4, sep = "")


apply(A, 1, function(x) { names(x[which(x!=0)]) })

который выводит список:

[[1]]
[1] "P2" "P4"

[[2]]
[1] "P1" "P2" "P3" "P4"

[[3]]
[1] "P3" "P4"
Другие вопросы по тегам