(編輯以反映幫助...我沒有做偉大的格式,但欣賞的反饋)重新編碼在多個數據幀
我卡在我懷疑什麼是很容易位問題。我有多個不同的數據集,我已經加載到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