R:STATS包中的reshape()函数出现问题 [英] R: Having trouble with reshape() function in stats package
本文介绍了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屋!
查看全文