r - 如何将二进制数据透视表转换为列表视图
问题描述
出于度量目的,尝试将数据从数据透视表转换为列表视图。
我们以二进制(0 或 1)矩阵格式接收数据:
物品 | 北 | 东方 | 南 | 西方 |
---|---|---|---|---|
苹果 | 1 | 0 | 1 | 0 |
橘子 | 0 | 1 | 1 | 0 |
香蕉 | 0 | 1 | 1 | 1 |
但需要将其转换为列表视图:
物品 | 店铺 |
---|---|
苹果 | 北 |
苹果 | 南 |
橘子 | 东方 |
橘子 | 南 |
香蕉 | 东方 |
香蕉 | 南 |
香蕉 | 西方 |
任何帮助,将不胜感激。
解决方案
在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))
推荐阅读
- flutter - 自定义 AppBar 不显示抖动
- php - 将 Json 发送到 Jira Api
- python - 为什么 PyPDF2 在打印 extractText 时显示此输出?
- firebase - Firebase.initializeApp() - 我怎么知道这需要等待异步功能?
- javascript - Javascript 三元运算符,其中结果可以是字符串和函数
- linux - 如何使用 cron 作业记录轮换我的日志文件
- ionic-framework - 使用未声明的标识符“FIRAnalytics”
- reactjs - 字符串消失的进度条
- java - 我编译了我的java程序并在eclipse平台上运行,还提供输入但没有得到输出?程序有任何逻辑错误
- javascript - 在 .txt、discord.js 中添加的最后一个文本下添加 args