提取列以分隔数据帧

时间:2017-08-10 09:32:22

标签: r dataframe

我需要做类似于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)
}

有效,但两列的标签混在一起,即第一列获取标签,但不是第二列。

3 个答案:

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

完成。

&#13;
&#13;
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;
&#13;
&#13;