如何将二进制数据透视表转换为列表视图

时间:2019-05-02 01:25:26

标签: r vba

尝试出于指标目的将数据从数据透视表转换为列表视图。

我们以二进制(0或1)矩阵格式接收数据:

| Item | North | East | South | West | | Apples | 1 | 0 | 1 | 0 | | Oranges | 0 | 1 | 1 | 0 | | Bananas | 0 | 1 | 1 | 1 |

但是需要将其转换为列表视图:

| Item | Store | | Apples | North | | Apples | South | | Oranges | East | | Oranges | South | | Bananas | East | | Bananas | South | | Bananas | West |

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

R中,一种选择是将数据gather转换为“长”格式,filter将“ val”为1的行并删除“ val”列

library(tidyverse)
df1 %>%
   mutate(rn = row_number()) %>%
   gather(Store, val, -Item, -rn) %>%
   filter(val == 1) %>%       
   arrange(rn) %>%
   select(-val, -rn)
#     Item Store
#1  Apples North
#2  Apples South
#3 Oranges  East
#4 Oranges South
#5 Bananas  East
#6 Bananas South
#7 Bananas  West

数据

df1 <- structure(list(Item = c("Apples", "Oranges", "Bananas"), North = c(1L, 
0L, 0L), East = c(0L, 1L, 1L), South = c(1L, 1L, 1L), West = c(0L, 
0L, 1L)), class = "data.frame", row.names = c(NA, -3L))