我想更改此数据集
Date A1 A2 A3 B1 B2 B3
1.4.04 5 1 2 10 13 4
2.4.04 2 2 0 11 12 5
3.4.04 4 4 3 14 15 8
这样的事情
Date A B C
1.4.04 5 10 1
1.4.04 1 13 2
1.4.04 2 4 3
2.4.04 2 11 1
2.4.04 2 12 2
2.4.04 0 5 3
3.4.04 4 14 1
3.4.04 4 15 2
3.4.04 3 8 3
列A1到A3是来自不同站的测量值,我想将它们放在一列中。 B. C列相同的是站数。怎么在R?
以下是data.frame
:
mydf <- structure(
list(Date = structure(1:3, .Label = c("1.4.04", "2.4.04", "3.4.04"),
class = "factor"),
A1 = c(5L, 2L, 4L), A2 = c(1L, 2L, 4L), A3 = c(2L, 0L, 3L),
B1 = c(10L, 11L, 14L), B2 = c(13L, 12L, 15L), B3 = c(4L, 5L, 8L)),
.Names = c("Date", "A1", "A2", "A3", "B1", "B2", "B3"),
row.names = c(NA, 3L), class = "data.frame")
答案 0 :(得分:3)
这是一个经典的&#34;宽&#34;到&#34;长&#34; reshape
问题(以及您的数据 - 至少是示例数据 - 很容易进行转换):
reshape(mydf, direction = "long", idvar="Date",
varying = 2:ncol(mydf), sep = "", timevar="C")
# Date C A B
# 1.4.04.1 1.4.04 1 5 10
# 2.4.04.1 2.4.04 1 2 11
# 3.4.04.1 3.4.04 1 4 14
# 1.4.04.2 1.4.04 2 1 13
# 2.4.04.2 2.4.04 2 2 12
# 3.4.04.2 3.4.04 2 4 15
# 1.4.04.3 1.4.04 3 2 4
# 2.4.04.3 2.4.04 3 0 5
# 3.4.04.3 3.4.04 3 3 8
答案 1 :(得分:1)
这有用吗? (用数据集的名称替换&#39;表格)
m1<-as.matrix(t(table[2:4]))
A<-as.vector(m1)
m2<-as.matrix(t(table[5:7]))
B<-as.vector(m2)
Date<-sort(rep(table$Date,3))
C<-rep(1:3,dim(table)[1])
output<-data.frame(Date,A,B,C)
如果没有,请提供可重复的示例。