我有一个.cvs文件,由4列和120行组成。 我试图通过每一行,我在哪里看到" 1"在第三列(这里称为" Dam")中,我想将该行保存在名为" Dam.one"
的矩阵中到目前为止,这是我的代码:
DamType = c( "Dam.one", "Dam.two", "Dam.three", "NoDam.one", "NoDam.two", "NoDam.three")
for (i in 1:120) {
if (mercury.raw[i,]["Dam"] == 1) {
if (mercury.raw[i,]["Type"] == 1){
DamType["Dam.one"] <- mercury.raw[i,]
}}}
这是数据集的前6个条目:`
> mercury.raw
Lake Mercury Dam Type
1 ALLEN.P 1.080 1 1
2 ALLIGATOR.P 0.025 1 1
3 A.SAGUNTICOOK.L 0.570 0 2
4 BALCH&STUMP.PONDS 0.770 0 2
5 BASKAHEGAN.L 0.790 1 2
6 BAUNEAG.BEG.L 0.750 0 2
我希望DamType["Dam.one"]
等于:
Lake Mercury Dam Type
1 ALLEN.P 1.080 1 1
2 ALLIGATOR.P 0.025 1 1
我不知道它有什么问题。 任何帮助表示赞赏。
答案 0 :(得分:0)
矩阵不能存储在矢量中。列表可以存储多个矩阵(在这种情况下为数据帧)。这看起来就像您尝试对数据进行分组,并且不需要for
循环。
DamType <- list()
DamType[["Dam.one"]] <- mercury.raw[mercury.raw$Dam == 1 & mercury.raw$Type == 1, ]
> DamType$Dam.one
Lake Mercury Dam Type
1 ALLEN.P 1.080 1 1
2 ALLIGATOR.P 0.025 1 1
答案 1 :(得分:0)
我建议更熟悉R和常用软件包,例如dplyr。
library(dplyr)
dam_grouped <- mercury.raw %>% group_by(Dam)