【发布时间】:2014-05-08 06:20:07
【问题描述】:
我正在尝试编写一个因子变量来跟踪 R 中另一个因子变量的年际变化。
假设我必须遵循数据结构:
df<-data.frame(id<-rep(seq(from=1,to=5,by=1),5),
year<-c(rep(2002,5), rep(2004,5), rep(2006,5), rep(2008, 5),
rep(2010, 5)), factor<-rbinom(n=25,size=1,prob=0.5))
colnames(df)<-c("id", "year", "factor1")
df[,1]<-as.factor(as.character(df[,1]))
df[,2]<-as.factor(as.character(df[,2]))
df[,3]<-as.factor(as.character(df[,3]))
factor2<-c()
循环结构如下:
for(i in levels(df[,1])){
for(j in levels(df[,2])){
if(df[,3]>0){factor2<-1}
else(factor2<-0)
}
}
返回:
factor2 作为具有 0 个元素的数值向量
我的问题是,我怎样才能让这个循环结构工作?
【问题讨论】:
-
您能否解释一下您认为您在该代码中的哪个位置创建了一个因子(甚至是数据框)?
-
> class(df[,1]) [1] "numeric" > df[,1] class(df [,1]) [1] “数字”
-
您的代码中没有任何因素。如果你这样做了,那么在 cbinding 数据时,你会丢失它们。
-
啊,所以实际上您没有在问题中包含所有相关代码。请编辑您的问题以解决此问题。
-
您是否在寻找类似:
factor2 <- with(df,ifelse(as.numeric(as.character(factor1))>0,1,0))
标签: r for-loop conditional-statements