按列将 R 数据帧拆分为许多新的数据帧

吓坏了

我想根据列将我的数据帧拆分为多个数据帧。大约有 37 列,前 2 列是标识符 Lab 和样品编号,其余列是元素/分析物信息。我想要每个元素/分析物的新数据框,每个新数据框的前 2 列将相同,元素/分析物名称形成新的数据框名称。

下面提供了数据框前 ​​10 行的片段。有很多缺失的数据我可以单独处理。

structure(list(Lab = c("I", "I", "K", "K", "M", "M", "O", "O", 
"P", "P"), Sample.Num = c("1", "2", "1", "2", "1", "2", "1", 
"2", "1", "2"), FeWet = c("", "", "", "", "", "", "62.16 ", "62.19 ", 
"", ""), FeXRF = c("62.54 ", "62.53 ", "62.91 ", "63.20 ", "62.42 ", 
"62.32 ", "", "", "", ""), FeCalc = c("62.53 ", "62.52 ", "62.42 ", 
"62.44 ", "62.40 ", "62.31 ", "62.40 ", "62.34 ", "", ""), Fe.II. = c("", 
"", "", "", "", "", "", "", "", ""), SiO2 = c("3.631 ", "3.627 ", 
"3.731 ", "3.739 ", "3.656 ", "3.669 ", "3.618 ", "3.643 ", "", 
""), CaO = c("0.056 ", "0.053 ", "0.043 ", "0.043 ", "0.053 ", 
"0.053 ", "0.047 ", "0.047 ", "", ""), Mn = c("0.4160 ", "0.4140 ", 
"0.4098 ", "0.4105 ", "0.4005 ", "0.4022 ", "0.421 ", "0.417 ", 
"", ""), Al2O3 = c("2.127 ", "2.134 ", "2.135 ", "2.118 ", "2.133 ", 
"2.140 ", "2.083 ", "2.116 ", "", ""), TiO2 = c("0.103 ", "0.102 ", 
"0.106 ", "0.106 ", "0.101 ", "0.101 ", "0.102 ", "0.103 ", "", 
""), MgO = c("0.074 ", "0.081 ", "0.087 ", "0.083 ", "0.077 ", 
"0.081 ", "0.082 ", "0.088 ", "", ""), P = c("0.0640 ", "0.0630 ", 
"0.0592 ", "0.0592 ", "0.0643 ", "0.0642 ", "0.063 ", "0.063 ", 
"", ""), S = c("0.022 ", "0.023 ", "0.021 ", "0.018 ", "0.020 ", 
"0.021 ", "0.020 ", "0.021 ", "", ""), K2O = c("0.0410 ", "0.0410 ", 
"0.0409 ", "0.0410 ", "0.0427 ", "0.0436 ", "0.044 ", "0.043 ", 
"", ""), Sn = c("", "", "0.0007 ", "0.0018 ", "0.0008 ", "0.0027 ", 
"", "", "", ""), V = c("", "", "0.0207 ", "0.0212 ", "0.0200 ", 
"0.0201 ", "", "", "", ""), Cr = c("", "", "0.0045 ", "0.0050 ", 
"0.0034 ", "0.0048 ", "0.0033 ", "0.0020 ", "", ""), Co = c("", 
"", "-0.0160 ", "-0.0167 ", "0.0027 ", "0.0030 ", "", "", "", 
""), Ni = c("", "", "0.0003 ", "0.0004 ", "0.0022 ", "0.0029 ", 
"", "", "", ""), Cu = c("", "", "0.0013 ", "0.0011 ", "0.0008 ", 
"0.0008 ", "", "", "", ""), Zn = c("", "", "0.0040 ", "0.0038 ", 
"0.0029 ", "0.0029 ", "", "", "", ""), As = c("", "", "0.0015 ", 
"0.0016 ", "0.0024 ", "0.0027 ", "", "", "", ""), Pb = c("", 
"", "0.0026 ", "0.0027 ", "0.0029 ", "0.0046 ", "", "", "", ""
), Ba = c("", "", "0.0132 ", "0.0161 ", "0.0119 ", "0.0143 ", 
"", "", "", ""), LOI.371 = c("", "", "", "", "", "", "", "", 
"", ""), LOI.425 = c("", "", "", "", "2.95 ", "3.05 ", "", "", 
"", ""), LOI.650 = c("", "", "", "", "3.50 ", "3.60 ", "", "", 
"", ""), LOI.1000 = c("3.78 ", "3.79 ", "", "", "", "", "3.91 ", 
"3.93 ", "", ""), LOI.1000.7764. = c("", "", "", "", "", "", 
"", "", "", ""), LOI.1000.2596. = c("", "", "3.78 ", "3.77 ", 
"3.76 ", "3.85 ", "", "", "", ""), Na2O = c("", "", "0.0121 ", 
"0.0115 ", "0.0418 ", "0.0419 ", "0.1160 ", "0.1126 ", "", ""
), Cl = c("", "", "0.0095 ", "0.0081 ", "0.0154 ", "0.0151 ", 
"", "", "", ""), Sr = c("", "", "", "", "0.0621 ", "0.0628 ", 
"", "", "", ""), Zr = c("", "", "", "", "(0.000)", "(0.000)", 
"", "", "", ""), Ctot = c("", "", "", "", "", "", "", "", "", 
""), Stot = c("", "", "", "", "", "", "", "", "", "")), row.names = c(NA, 
10L), class = "data.frame")

我提取了我想要的新数据框的列名称,认为我可以使用它来对数据框进行 for 循环,但不确定如何分配新数据框。

newdfList <- colnames(df[,-c(1:2)])

我不知道下一步该做什么,所以尝试了以下操作

for (i in 3:NCOL(df)){
  i <- data.frame(df[,c(1:2,(i))])
}

我想到了子集和拆分选项,但不知道如何迭代地遍历每个所需的列以获得新的 df

谢谢

罗纳克·沙阿

使用lapply您可以创建数据框列表。

result <- lapply(3:ncol(df), function(x) df[, c(1:2, x)])

如果您需要创建单独的数据框,请为列表分配名称并使用list2env.

names(result) <- names(df)[3:ncol(df)]
list2env(result, .GlobalEnv)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R将数组拆分为数据帧

将数据帧拆分为 R 中的列子集列表

R-将大型数据帧并行拆分为列表

R函数根据索引将数据帧拆分为多个数据帧

将数据帧拆分为新数据帧时的命名

R:将数据帧按组和行迭代拆分为列表

R中是否有一种方法可以将数据帧过滤并将其拆分为新的数据帧?

R-将一列数据帧拆分为多列

将分隔的字符串拆分为R数据帧中的不同列

如何将基于相等长度的数据帧列拆分为R中的单独行

如何在R中按行对数据帧进行排序,然后将其拆分为多个数据帧?

按行号将数据帧拆分为数据帧列表

将基于模式的数据帧行拆分为新列

根据R中的列名称将一个数据帧拆分为多个数据帧

R:按行拆分连接的数据帧

在 R 中,根据拆分字符串中的内容将 1 列数据帧转换/拆分为 4 列

按日期将数据帧拆分为多个帧 Python

如何将R数据帧拆分为矢量(解除绑定)

r通过迭代数字过滤器将数据帧拆分为列表

根据 R 中的索引将数据帧拆分为多个部分

在R中以定义的顺序将基于组的数据帧拆分为列表

将列表列拆分为R数据帧上的多个整数列

R:如何根据单元格中的值将数据帧中的行拆分为多行?

在R数据帧中将列值从c(a,b)拆分为a和b

将数据帧中的每一列拆分为一个向量,然后写入目录R

将数据帧拆分为多个数据帧

将较大的数据帧拆分为多个较小的数据帧

将大数据帧拆分为较小的相等数据帧

R:按空间拆分数据帧行,删除通用元素,将不等长的列放在新的df中