我正在尝试使用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"))
答案 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"))
}
}