我需要做类似于this的事情,但略有不同。
我有一个包含33列的数据框。我需要有一系列数据帧,每个数据帧包含第一列和以下列之一。
我该怎么做?
更新
在上面提到的问题中获得灵感的答案之一,我尝试做以下事情:
for (i in 2:ncol(data))
{temp <- data.frame(data$col1, data[,i])
colnames(temp) <- colnames(data)[i]
assign(colnames(data)[i], temp)
rm(temp)
}
有效,但两列的标签混在一起,即第一列获取标签,但不是第二列。
答案 0 :(得分:2)
你可以把它们放在一个列表中:
mylist <- list()
for(i in 1:32){
mylist[[i]] <- df[,c(1, i+1)]
names(mylist)[i] <- colnames(df)[i+1]
}
这将创建一个包含32个数据帧的列表,每个数据帧包含第一列,连续一个列,从第二列开始。
答案 1 :(得分:1)
或者,您可以使用以下函数执行此操作:
makedf <- function(df, i) {
df %>%
select(c(1,i)) %>%
return()
}
答案 2 :(得分:0)
完成。
for (i in 2:ncol(data))
{temp <- data.frame(data[,1], data[,i])
colnames(temp) <- c("col1", colnames(data)[i])
assign(colnames(data)[i], temp)
rm(temp)
}
&#13;