我想通過向它應用兩個條件來對數據集進行子集合。當我附加數據幀時,應用第一個條件,分離數據幀,重新附加,應用第二個條件並再次分離,得到預期結果,一個包含9個觀察值的數據框。R中的連接/分離行爲非常奇怪
當然,在應用第二個條件之前,您通常不會分開/連接。所以我附上,將這兩個條件相互適用,然後分離。但現在的結果是不同的:這是一個有24個觀測值的數據框。除了其中的5個觀察值外,其餘所有數據都只由NA值組成。
我知道有很多關於使用attach的建議,並且我明白它很危險,因爲很容易忽略仍然處於活動狀態的附加語句。這裏我的觀點是另一回事。我看到一種我無法理解的行爲。我正在使用R Studio 0.99.465和64位-R 3.2.1。
因此,這裏的代碼,第一個版本是笨拙,但產生正確的結果(DF 9個觀察,所有的非NA):
df <- expand.grid(early_vvl=c(0,1), inter_churn=c(0,1), inter_new_contract=c(0,1), late_vvl=c(0,1), late_no_reaction=c(0,1))
attach(df)
df <- df[(1-early_vvl) >= inter_churn + inter_new_contract + late_vvl,]
detach(df)
attach(df)
df <- df[early_vvl <= late_no_reaction,]
detach(df)
現在有24個觀測產生的數據幀的一個,其中大部分僅由NA值組成:
df <- expand.grid(early_vvl=c(0,1), inter_churn=c(0,1), inter_new_contract=c(0,1), late_vvl=c(0,1), late_no_reaction=c(0,1))
attach(df)
df <- df[(1-early_vvl) >= inter_churn + inter_new_contract + late_vvl,]
df <- df[early_vvl <= late_no_reaction,]
detach(df)
我很困惑。有人明白爲什麼第二個版本會產生不同的結果嗎?
......從而表明爲什麼要避免附加。 –
非常感謝照明快速,清晰和全面的答案!這是我最後一次使用附件... – MightyCurious