我的数据帧的“测试”看起来像这样:如何从单个数据框的列自动创建多个数据框?
Date 1 2 3
01.01.1985 NA NA NA
09.01.1985 NA NA NA
17.01.1985 0.05173014 0.04578678 0.04326039
25.01.1985 NA NA NA
02.02.1985 NA NA NA
10.02.1985 0.05835957 0.05499137 0.05497832
对于从1到n(除日期列)各列我想创建1到n(在本实施例3)dataframes每个包含日期列和从1到n的另一列。例如:
Date 3
1 01.01.1985 NA
2 09.01.1985 NA
3 17.01.1985 0.04326039
4 25.01.1985 NA
5 02.02.1985 NA
6 10.02.1985 0.05497832
理想的每个数据帧的新公司将数量“n”或类似“new_frame_n”来命名。由于我的整个数据框包含超过一千行(日期)和大约50列(以1到n命名),我想找出一种方法来自动执行此操作。 我已经通过多种方式试了一下,这是我到目前为止有:
i <- 2 #start at second column
m <- ncol(test) # assign this to length of loop
m
for (i in 2:m) {
new_frame_[[i-1]] <- subset(test, select = c(Date, i))
i <- i+1
}
我遇到这个How to create multiple data frames from a huge data frame using a loop? [closed],试图将其应用到我的数据,但它没有工作,所以我想一个循环会起作用。我对r很新。 非常感谢!
我建议使用一个列表'升< - lapply(seq_along(DF)[ - 1],函数(x)的DF [,C(1,x)]的)'如果你必须把它们作为单独的对象,你可以命名列表元素,在这里我将它们命名为new_frame_1,_2,_3,然后做'list2env(setNames(l,paste0('new_frame_',seq_along(l))),envir = .GlobalEnv)'现在你有三个新的数据框对象,new_frame_1,new_frame_2,new_frame_3,在你的工作空间 – rawr
感谢您的建议。在寻找解决方案时,我遇到了很多类似的问题,基本上那些回答问题的人总是建议使用一个列表。所以我也会尝试。 –