r - 转向凌乱的数据
问题描述
我有看起来像这样的数据
structure(list(V1 = c("ABT", "AK", "AT", "AZ", "BG", "BT"), V2.1 = c("MLC_7", "MLC_07", "MLC_04", "MLC_07", "0", "0"), V2.2 = c("MLC_8", "0", "MLC_05", "RND_01", "0", "0"), V2.3 = c("0", "0", "0", "0", "0", "0"), V2.4 = c("0", "0", "0", "0", "0", "0"), V2.5 = c("0", "0", "0", "0", "0", "0")), row.names = c(NA, 6L), class = "data.frame")
我需要使用 V2.1:V2.5 中的变量,使其变为
V1 | MLC_RND | ID |
---|---|---|
ABT | MLC | 7 |
ABT | MLC | 8 |
AK | MLC | 7 |
在 | MLC | 4 |
在 | MLC | 5 |
我怎样才能做到这一点?我尝试了 pivot_longer/wider 但真的很困惑....
请帮忙!
解决方案
我们可以使用pivot_longer
重塑为“长”格式,然后filter
将值不是“0”的“MLC”列separate
转换为列
library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(cols = V2.1:V2.5, values_to = 'MLC') %>%
dplyr::filter(MLC != "0") %>%
separate(MLC, into = c("MLC_RND", "ID"))
推荐阅读
- angular - 为什么以反应形式订阅不起作用?
- c# - 如何使用具有灵活长度的数组或列表来 Linq DbContext
- ruby-on-rails - 如何使用 Ruby on Rails 在上传的日志文件中运行正则表达式?
- html - 如何将 iframe 的格式化 html 获取/转换为纯文本?
- java - Android开发中如何同步音频
- terraform - VNET 地址空间可以用于 NSG 源地址前缀吗?
- cmd - 如何设置快捷命令以转到某个文件夹
- jquery - 使用类和数据属性在 .each() 循环中创建选择器
- jekyll - 如何配置 Jekyll 语法高亮?
- php - Eventbrite API - 如何获取所有用户的 evnet 列表?