R:STATS包中的reshape()函数出现问题 [英] R: Having trouble with reshape() function in stats package

查看:8
本文介绍了R:STATS包中的reshape()函数出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当一个data.Frame中有多个变量需要被熔化时,我对如何使其工作感到困惑。下面是一个例子:

Data <- data.frame(SampleID = rep(1:10, each = 3), 
               TimePoint = rep(LETTERS[1:3], 10))
Data$File.ESIpos <- paste("20141031 Subject", Data$SampleID, "Point",
                     Data$TimePoint, "ESIpos")

Data$Date.ESIpos <- "20141031"

Data$File.ESIneg <- paste("20141030 Subject", Data$SampleID, "Point", 
                     Data$TimePoint, "ESIneg")
Data$Date.ESIneg <- "20141030"

Data$File.APCIpos <- paste("20141029 Subject", Data$SampleID, "Point", 
                     Data$TimePoint, "APCIpos")
Data$Date.APCIpos <- "20141029"

我希望按日期和文件将其融化,以便新的数据帧具有列"SampleID"、"Timepoint"、一个新列"模式"(其中选项为ESIpos、ESIneg和APCIpos)、"文件"和"日期"。这是我使用rehape()函数获得的最接近的结果。

Data.long <- reshape(Data, 
                     varying = c("File.ESIpos", "Date.ESIpos",
                                 "File.ESIneg", "Date.ESIneg", 
                                 "File.APCIpos", "Date.APCIpos"),
                     idvar = c("SampleID", "TimePoint"),
                     ids = c("ESIpos", "ESIneg", "APCIpos"),
                     v.names = c("Date", "File"),
                     sep = ".",
                     direction = "long")

输出是一个包含列"SampleID"、"Timepoint"、"Time"(对于"ESIpos"、"ESIneg"或"APCIpos"是"1"、"2"或"3")、"日期"和"文件"的data.Frame。

第一个问题是我不知道如何定义新的"模式"列。当然,我可以将"time"列更改为"模式",但是否有某种方法可以告诉它,级别应该是"ESIpos"、"ESIneg"和"APCIpos"而不是1、2、3?我以为我是在用ids = c("ESIpos"...这样做,但显然我不是。另外,无论我是否包含ids = c("ESIpos"...行,我都会得到相同的输出。

第二个较小的问题是,无论我说v.names = c("Date", "File")还是v.names = c("File", "Date"),列总是交换的,也就是说,我在Date列中得到文件名,反之亦然。

推荐答案

我认为这是您要使用的reshape()命令

reshaped <- reshape(Data, direction = "long", varying = 3:8, 
                 times = c("ESIpos", "ESIneg", "ACPIpos"))
head(reshaped)
#          SampleID TimePoint   time                              File     Date id
# 1.ESIpos        1         A ESIpos 20141031 Subject 1 Point A ESIpos 20141031  1
# 2.ESIpos        1         B ESIpos 20141031 Subject 1 Point B ESIpos 20141031  2
# 3.ESIpos        1         C ESIpos 20141031 Subject 1 Point C ESIpos 20141031  3
# 4.ESIpos        2         A ESIpos 20141031 Subject 2 Point A ESIpos 20141031  4
# 5.ESIpos        2         B ESIpos 20141031 Subject 2 Point B ESIpos 20141031  5
# 6.ESIpos        2         C ESIpos 20141031 Subject 2 Point C ESIpos 20141031  6

这篇关于R:STATS包中的reshape()函数出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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