다음 샘플 data.frame :용융 4 열 두 변수 열을 결합하면서
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
패키지를 사용하기 시작 그러니이 데이터. 프레임 변환을 향상시킬 수있는 방법에 대해 알려주십시오 (아무리 명백해 보이더라도).
'col1 <-c ("A_limit", "B_limit"); col2 <- c ("A", "B")'; 숫자'variable' 칼이 마음에 들지 않는다면, 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