【发布时间】:2015-11-30 20:59:45
【问题描述】:
我希望以自动(循环)方式将大型数据框 (mix1a.df) 分解为许多较小的数据框(例如 drugA.df、drugB.df、drugC.df 等)。如何让 R 在初始数据帧mix1a.df 中为它找到的每种药物(列表中的 n 个药物 = n 个数据帧)自动创建一个子数据帧?
例如,现在我通过以下方式为单个数据框提取我想要的信息:
alprazolam.df<-subset(mix1a.df, mix1a.df$Component.name.x == "Alprazolam",
select=c("Sample.Name", "Component.name.x", "TCAmount", "Ratio"))
alprazolam.df$Sample.Name<-(as.character)(alprazolam.df$Sample.Name)
alprazolam.df$Ratio<-(as.numeric)(alprazolam.df$Ratio)
alprazolam.df$Sample.Name.Level <- substr(alprazolam.df$Sample.Name, 1,2)
alprazolam.df$Sample.Name.Level<-(as.factor)(alprazolam.df$Sample.Name.Level)
理想情况下,在自动化的过程中,类类型也将被转换,如上面的代码所示。
对于一些示例数据:
Sample.Name Component.name TCAmount Ratio
1A-S0 Alprazolam 0.0 0.05
1A-S1 Alprazolam 1.5 0.07
1A-S2 Alprazolam 3.1 0.08
1A-S3 Alprazolam 6.25 0.10
2A-S0 Alprazolam 0.0 0.06
2A-S1 Alprazolam 1.5 0.08
2A-S2 Alprazolam 3.1 0.09
2A-S3 Alprazolam 6.25 0.10
1B-S0 Alprazolam 0.0 0.05
1B-S1 Alprazolam 1.5 0.08
1B-S2 Alprazolam 3.1 0.10
1B-S3 Alprazolam 6.25 0.11
1A-S0 Codeine 0.0 0.10
1A-S1 Codeine 1.5 0.30
1A-S2 Codeine 3.1 0.41
1A-S3 Codeine 6.25 0.62
2A-S0 Codeine 0.0 0.09
2A-S1 Codeine 1.5 0.29
2A-S2 Codeine 3.1 0.40
2A-S3 Codeine 6.25 0.62
1B-S0 Codeine 0.0 0.09
1B-S1 Codeine 1.5 0.28
1B-S2 Codeine 3.1 0.41
1B-S3 Codeine 6.25 0.61
【问题讨论】:
-
您能提供任何示例数据吗?我会根据药物的唯一值做一个 for 循环,然后将其保存在一个列表中。然后,此列表将包含所有不同的数据框。
-
为此使用
split。 -
已添加示例数据。抱歉 - 我应该把它放在前面。