我想从mydata_in
到mydata_out_A
和mydata_out_B
:
mydata_in <- data.frame(time=c(100,200,300,400))
mydata_out_A <- data.frame(time=c(100,100,100,200,200,200,300,300,300,400,400,400), time_new = c(101,102,103,201,202,203,301,302,303,401,402,403))
mydata_out_B <- data.frame(time=c(100,200,300,400), time_1 = c(101,201,301,401), time_2 = c(102,202,302,402), time_3 = c(103,203,303,403), time_4 = c(104,204,304,404))
使用dplyr
。
我想我需要像time + seq(1,3,1)
这样的东西,但不确定如何从一个单元格中获取多个列/行。
在这种情况下,我得到mydata_out_A
或mydata_out_B
并没有太大的区别,因为我应该能够将它们相互转换,例如与
mydata_out_B %>% gather(time_type, time_new, -time) %>% arrange(time, time_new)
但是,如果将来每个单元的输出数量不同(无论出于何种原因),mydata_out_A
的优势在于每个输入单元的行数可以不同(此处为时间)。 / p>
答案 0 :(得分:3)
我们可以使用base R
stack(setNames(Map(`+`, mydata_in$time, list(1:3)), mydata_in$time))[2:1]
或使用tidyverse
library(tidyverse)
expand(mydata_in, time, time_New = 1:3) %>%
mutate(time_New = time + time_New)