在for循环中保存数据框和变量的名称

时间:2017-05-30 16:00:21

标签: r

我正在尝试使用for循环来保存数据帧和变量名称。

我有一个名为regionmap的数据框,其中一个变量(Var3)可以获取数千个不同的值,其中有15个这样的形式: “RegionMap *”,其中*是向量c:

的值之一
regions <- c("A", "B"........"Z")

我需要运行一个循环,选择每个值出现的行,将这些行保存为新的数据帧,转换虚拟中的相对频率,然后将新数据框与更大的数据框合并为目标收集所有这些。

以下代码有效,我只是想知道是否可以运行它15次代替每个“A”(作为字符串来选择和作为数据帧和变量的名称)与c中的其他c元素相似环。 (循环标准不起作用)

A <- regionmap[grep("RegionMap A", regionmap$Var3), ]

A$Freq[A$Freq > 1] <- 1

A$Var3 <- NULL

colnames(A) <- c( "name", "date", "RegionMap A")

access_panel <- merge(access_panel, A,by=c("name", "date"))

1 个答案:

答案 0 :(得分:0)

如果要将所有内容合并在一起,则不需要以不同方式命名变量 - 只需列名称。这样的事情应该可以解决问题...

regions <- c("A", "B"........"Z")
for(x in regions){
    mapname <- paste("RegionMap",x,sep=" ") #this is all that needs to change each time
    A <- regionmap[grep(mapname, regionmap$Var3), ]
    A$Freq[A$Freq > 1] <- 1
    A$Var3 <- NULL
    colnames(A) <- c( "name", "date", mapname)
    if(x=="A") {
      access_panel <- A #first one has nothing to merge into
    } else {
      access_panel <- merge(access_panel, A ,by=c("name", "date"))
    }
}