它实际上不是
ggplot2
问题,但是一个数据争用问题,目标是基于第二个数据帧创建第一个数据帧。这里有一个选项
dplyr
和
tidyr
.
library(dplyr)
library(tidyr)
dat2 <- dat %>%
gather(person, Value, -step) %>%
group_by(person) %>%
slice(rep(row_number(), each = 2)) %>%
slice(2:(n() - 1)) %>%
mutate(Type = rep(c( "start", "end"), times = n()/2),
step = rep(LETTERS[1:(n()/2)], each = 2)) %>%
spread(Type, Value) %>%
arrange(person, step) %>%
select(step, person, start, end) %>%
arrange(desc(person), step) %>%
ungroup()
dat2
# # A tibble: 4 x 4
# step person start end
# <chr> <chr> <int> <int>
# 1 A sam 0 4
# 2 B sam 4 6
# 3 A greg 2 7
# 4 B greg 7 11
数据
dat <- read.table(text = " step sam greg
1 A 0 2
2 B 4 7
3 C 6 11",
header = TRUE, stringsAsFactors = FALSE)