重塑不寻常的数据集 [英] Reshaping unusual data set

查看:9
本文介绍了重塑不寻常的数据集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一个需要重塑的不寻常的数据集,但正常的重塑/tidyr包似乎没有办法解决它。虽然可以使用子设置和rbind重塑数据集,但必须有更直接的方法来解决此问题。

数据集如下所示:

ID  Item.1  Item.1.Value    Item.2  Item.2.Value    Item.3  Item.3.Value
001     A         3             C         7     
002     B         4             
003     A         2             B         1             F         5
004     C        10             L         3     

每个观察值包含20个测量值集合中的1-3个测量值。此外,相同的测量类型可以出现在不同观测值的多个列中。

我需要将其更改为:

ID  Item    Item.Value
001  A      3
001  C      7
002  B      4
003  A      2
003  B      1
003  F      5
004  C      10
004  L      3

我的部分问题是我不知道初始表配置的常规术语。

谢谢!

推荐答案

我不认为它是"不寻常的"数据集,但增加了额外复杂性的是,在ID列之后,其余的列都是项-值对。以下是使用基本reshapetidyverse函数将数据从宽格式重塑为长格式的方法。

为了重现性,以下是我开始时使用的数据框:

df = structure(list(ID = c("001", "002", "003", "004"), Item.1 = structure(c(1L, 
2L, 1L, 3L), .Label = c("A", "B", "C"), class = "factor"), Item.1.Value = c(3L, 
4L, 2L, 10L), Item.2 = structure(c(3L, 1L, 2L, 4L), .Label = c("", 
"B", "C", "L"), class = "factor"), Item.2.Value = c(7L, NA, 1L, 
3L), Item.3 = c(NA, NA, "F", NA), Item.3.Value = c(NA, NA, 5L, 
NA)), .Names = c("ID", "Item.1", "Item.1.Value", "Item.2", "Item.2.Value", 
"Item.3", "Item.3.Value"), row.names = c(NA, -4L), class = "data.frame")

基础reshape方法

dfr = reshape(df, varying=list(seq(2,ncol(df),2),seq(3,ncol(df),2)), direction="long", 
              idvar="ID", timevar=NULL, v.names=c("Item","Value"))
dfr = dfr[!is.na(dfr$Value),]
dfr = dfr[order(dfr$ID),]

dfr
       ID Item Value
001.1 001    A     3
001.2 001    C     7
002.1 002    B     4
003.1 003    A     2
003.2 003    B     1
003.3 003    F     5
004.1 004    C    10
004.2 004    L     3

tidyverse方法

我不确定这是最简洁还是最优雅的方法,所以如果你有更好的方法,请告诉我。

library(tidyverse)

dfr = map2_df(seq(2,ncol(df),2), seq(3,ncol(df),2), 
     ~ setNames(df[, c(1,.x,.y)], c("ID","Item","Value"))) %>%
  filter(!is.na(Value)) %>%
  arrange(ID)
   ID Item Value
1 001    A     3
2 001    C     7
3 002    B     4
4 003    A     2
5 003    B     1
6 003    F     5
7 004    C    10
8 004    L     3

这篇关于重塑不寻常的数据集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆