首页 > 解决方案 > 如何将二进制数据透视表转换为列表视图

问题描述

出于度量目的,尝试将数据从数据透视表转换为列表视图。

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

物品 东方 西方
苹果 1 0 1 0
橘子 0 1 1 0
香蕉 0 1 1 1

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

物品 店铺
苹果
苹果
橘子 东方
橘子
香蕉 东方
香蕉
香蕉 西方

任何帮助,将不胜感激。

标签: rvba

解决方案


R中,一个选项是将gather数据转换为 'long' 格式,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))

推荐阅读