Преобразование фиктивной переменной в фактическое значение
Я работал над набором данных, который представлен следующим образом:
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"