R 基于列值分离数据帧

R 基于列值分离数据帧,r,dataframe,R,Dataframe,我在尝试用R编写代码脚本时遇到了一些问题,这样它就可以根据数据帧列中的字符分隔数据帧,而无需手动指定子集命令。以下是在R中复制的脚本: a=c("Model_A","R1",358723.0,171704.0,1.0,36.818500,4.0222700,1.38895000) b=c("Model_A","R2",358723.0,171704.0,2.6,36.447300,4.0116100,1.37479000) c=c("Model_A","R3",35872

我在尝试用R编写代码脚本时遇到了一些问题,这样它就可以根据数据帧列中的字符分隔数据帧,而无需手动指定子集命令。以下是在R中复制的脚本:

    a=c("Model_A","R1",358723.0,171704.0,1.0,36.818500,4.0222700,1.38895000)
    b=c("Model_A","R2",358723.0,171704.0,2.6,36.447300,4.0116100,1.37479000)
    c=c("Model_A","R3",358723.0,171704.0,5.0,35.615400,3.8092600,1.34301000)
    d=c("Model_B","R1",358723.0,171704.0,1.0,39.818300,2.4475600,1.50384000)
    e=c("Model_B","R2",358723.0,171704.0,2.6,39.391600,2.4209900,1.48754000)
    f=c("Model_B","R3",358723.0,171704.0,5.0,38.442700,2.3618400,1.45126000)
    g=c("Model_C","R1",358723.0,171704.0,1.0,31.246400,2.2388000,1.30652000)
    h=c("Model_C","R2",358723.0,171704.0,2.6,30.911600,2.2144800,1.29234000)
    i=c("Model_C","R3",358723.0,171704.0,5.0,30.166700,2.1603000,1.26077000)
    df=data.frame(a,b,c,d,e,f,g,h,i)
    df=t(df)
    df=data.frame(df)
    col_list=list("Model","Receptor.name","X(m.)","Y(m.)","Z(m.)",
    "nox","PM10","PM2.5")
    colnames(df)=col_list
本质上,我试图通过模型名称(“模型A”、“模型B”和“模型C”)来分离数据帧(df),并将它们存储在新的和不同的数据帧中。我一直在尝试使用以下命令

    df_test=split(df,with(df,interaction(Model,Model)), drop = TRUE)
这个命令分离数据帧,但将它们存储在列表中,我不知道如何单独提取列表并将它们存储为数据帧。是否有一个更简单的解决方案(如果可能的话,避免使用subset命令,因为我需要脚本是动态的和相对的),或者是否有人知道如何使用上面显示的最后一个命令将列表分隔为单独的数据帧?如果可能,是否可以在模型后命名数据帧

如果有很多问题,我深表歉意,但如果您有任何帮助,我们将不胜感激!谢谢大家!

list2env(split(df,df$Model),envir=.GlobalEnv)
将为您的全局环境提供三个数据帧,以模型命名,其中包含相关行

> Model_A
    Model Receptor.name  X(m.)  Y(m.) Z(m.)     nox    PM10   PM2.5
a Model_A            R1 358723 171704     1 36.8185 4.02227 1.38895
b Model_A            R2 358723 171704   2.6 36.4473 4.01161 1.37479
c Model_A            R3 358723 171704     5 35.6154 3.80926 1.34301

虽然我只想使用
dflist来保存三个数据帧的列表,但感谢您的快速响应。我能问一下,你为什么建议把它们列在清单上?它是否使以后运行命令更容易?我很好奇,因为我有一个大约750行的脚本,运行空气质量评估,我正在使脚本更具相关性和自动化,因此如果列表优于数据帧,这对我来说可能非常有用。我将添加一个列表优势的快速示例。清单很好!
table(Model_A$PM10)
table(Model_A$PM2.5)
...
table(Model_C$PM2.5)
lapply(dflist, function(x) table(x["PM10"]))
lapply(dflist, function(x) table(x["PM2.5"]))