を組み合わせながら、次のサンプルdata.frame:メルト4列2つの変数の列
Date <- seq(as.Date("2016/9/1"), as.Date("2016/9/10"), "days")
A <- sample(0:200, 10)
B <- sample(0:400, 10)
A_limit <- rep(200,10)
B_limit <- rep(400,10)
data_sample <- data.frame(Date,A,B,A_limit,B_limit)
> Date A B A_limit B_limit
1 2016-09-01 175 270 200 400
2 2016-09-02 160 50 200 400
3 2016-09-03 173 25 200 400
...
と私は、フォームにそれを再構築したいと思います:
> Date limit variable value
1 2016-09-01 200 A 175
2 2016-09-02 200 A 160
3 2016-09-03 200 A 173
...
31 2016-09-01 400 B 270
32 2016-09-02 400 B 50
33 2016-09-03 400 B 25
....
私が取得するために管理それが行われるが、私の方法は、はるかに複雑にあるように思える:
library("reshape2")
data_sample_2 <- data_sample %>% melt(id=c("Date","A","B"))
levels(data_sample_2$variable) <- c(levels(data_sample_2$variable),"A","B")
data_sample_2$variable[data_sample_2$variable == "A_limit"] <- as.factor("A")
data_sample_2$variable[data_sample_2$variable == "B_limit"] <- as.factor("B")
names(data_sample_2)[names(data_sample_2) == "value"] <- "limit"
names(data_sample_2)[names(data_sample_2) == "variable"] <- "variable_1"
data_sample_3 <- data_sample_2 %>% melt(id=c("Date","variable_1","limit"))
data_sample_3 <- droplevels(data_sample_3)
data_sample_4 <- data_sample_3[data_sample_3$variable_1 == data_sample_3$variable,]
data_sample_4$variable_1 <- NULL
私はちょうどreshape2
パッケージを使用して開始しましたですから、このdata.frameの変換を改善する方法については、私に教えてください。
あなたは 'col1 <-c(" A_limit "、" B_limit "); col2 < - c( "A"、 "B") ';あなたが数値の 'variable' colを気にしないならば、' data.table :: melt(data_sample、measure = list(col1、col2)、 value.name = c( "limit"、 "value")) – mtoto
私はあなたのコードを試してみるとこのエラーが出ます: 'エラー:データに値が見つからない:c(" A_limit "、" B_limit ")、c(" A "、" B ")'。どのような手がかりが間違っていますか? – RandomDude
'data_sample'を' data.table'に変換してください – mtoto