如何从每个单元格中获取多行/列?

时间:2017-04-12 10:32:27

标签: r dplyr

我想从mydata_inmydata_out_Amydata_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_Amydata_out_B并没有太大的区别,因为我应该能够将它们相互转换,例如与

mydata_out_B %>% gather(time_type, time_new, -time) %>% arrange(time, time_new)

但是,如果将来每个单元的输出数量不同(无论出于何种原因),mydata_out_A的优势在于每个输入单元的行数可以不同(此处为时间)。 / p>

1 个答案:

答案 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)