我的数据框“test”看起来像这样:
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)数据帧,每个数据帧包含日期列和另一列从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很新。 非常感谢!
答案 0 :(得分:2)
试试这个:
df <- read.table(textConnection("
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" ) ,header=TRUE)
for ( i in 1:ncol(df[-1])) {
assign(paste0("new_frame", i), cbind(df[1], df[-1][i]))
}