这个问题在这里已有答案:
我有这个数据框,第一列给出了时间步,每行给出了值:
1 1.5 1.6 5.4 7.8
2 4.5 4.6 2.4 4.7
3 7.8 7.8 6.8 6.8
我需要像这样安排他们
1 1.5
2 4.5
3 7.8
1 1.6
2 4.6
3 7.8
1 5.4
2 2.4
3 6.8
1 7.8
2 4.7
3 6.8
我尝试了gather()
的简单tidyr
,但它没有做的技巧因为我还需要进行重新编号。
任何想法...我想它太简单了
您可以
data.frame(new1 = df[,1], new2 = unlist(df[,-1]))
# new1 new2
#V21 1 1.5
#V22 2 4.5
#V23 3 7.8
#V31 1 1.6
#V32 2 4.6
#V33 3 7.8
#V41 1 5.4
#V42 2 2.4
#V43 3 6.8
#V51 1 7.8
#V52 2 4.7
#V53 3 6.8
对于new1
,您使用的是r e c y c l i n g。
使用dplyr
:
library(dplyr)
tt <- "id v1 v2 v3 v4
1 1.5 1.6 5.4 7.8
2 4.5 4.6 2.4 4.7
3 7.8 7.8 6.8 6.8"
dat <- read.table(text = tt, header = T)
dat %>%
gather("id", "value") %>%
mutate(id = rep(1:3, 4))
# id value
# 1 1 1.5
# 2 2 4.5
# 3 3 7.8
# 4 1 1.6
# 5 2 4.6
# 6 3 7.8
# 7 1 5.4
# 8 2 2.4
# 9 3 6.8
# 10 1 7.8
# 11 2 4.7
# 12 3 6.8