繁体   English   中英

R:按列拆分数据框

[英]R: Splitting dataframe columnwise

我有一个具有这种结构的数据帧

x = data.frame(let = letters, LET = LETTERS, num1 = 1:26, num2 = 21:46, num3 = 71:96, num4 = 68:93 )

我想将其拆分为3列数据框列表。前两列 LET保持通用,第三列不同。 第一个数据帧是(let,LET,num1) ,第二个数据帧是(let,LET,num2) ,依此类推。

我目前的策略是将数据帧转换为长格式,并使用plyr和dplyr包基于num对其进行拆分。 有没有更简单的方法来完成这项任务。

您可以像这样使用lapply作为示例

lapply(1:4, function(D) x[ ,c("let", "LET", paste0("num", D))])

如果您不知道可以使用的num*列的列名

nonLetNames <- names(x)[!(names(x) %in% c("let", "LET"))]
lapply(nonLetNames, function(nom) x[ ,c("let", "LET", nom)])

这是一种基于Map的方法

Map(function(x,y,z) setNames(cbind(x,y), c(names(x), z)), 
            list(x[1:2]), x[-(1:2)], names(x)[-(1:2)])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM