(编辑以反映帮助...我没有做伟大的格式,但欣赏的反馈)重新编码在多个数据帧
我卡在我怀疑什么是很容易位问题。我有多个不同的数据集,我已经加载到R中,所有这些数据集都有不同数量的观察值,但所有这些数据集都有两个名为“A1”,“A2”和“A3”的变量。如果A3包含大于零的值,并且如果A3包含小于零的值,则保留在“A2”中,我希望在包含“A1”中保存的值的三个数据帧中的每一个中创建一个新变量。似乎很简单,对吧?
我这段代码尝试使用这个虚假数据:
set.seed(1)
A1=seq(1,100,length=100)
A2=seq(-100,-1,length=100)
A3=runif(100,-1,1)
df1=cbind(A1,A2,A3)
A3=runif(100,-1,1)
df2=cbind(A1,A2,A3)
我约百分之一千肯定的是,R拥有用于创建多个数据帧相同的命名变量的一些功能,但我已尽力用lapply做这个:
mylist=list(df1,df2)
lapply(mylist,function(x){
x$newVar=x$A1
x$newVar[x$A3>0]=x$A2[x$A3>0]
return(x)
})
但是newVar不适用于我,一旦我离开lapply循环。例如,如果我要求新变量的平均值: mean(df1 $ newVar) [1]不适用 警告消息: 在mean.default(df1 $ newVar)中: 参数不是数字或逻辑:返回NA
任何帮助,将不胜感激。
谢谢。
谢谢你回去我这么快,帮我脱身从错误。现在我有:' lapply(mylist,function(x){$ x newVar = x $ A1 x $ newVar [x $ A3> 0] = x $ A2 [x $ A3> 0] return(x) }) ' 但是当我稍后查看df1和df2时,它们仍然只有3个变量:A1,A2和A3。没有“newVar”。 名称(df1) [1]“A1”“A2”“A3” 我在做什么不正确? – Molly
@Molly:查看我的编辑;) – digEmAll
完美!谢谢。 – Molly