2017-08-23 135 views
0

這是我的數據的一個小樣本的值:濾波基於在R數據幀

data table

頂行包括表示不同樹種(例如PJ =葉鬆)碼。數值表示調查地塊內每種物種的數量。每個案例代表一個由森林經理(B)評估一次的立場,然後由管理機構(A)進行基於情節的調查進行審計。我想在R中使用chisq.test來確定兩個樣本來自同一羣體的概率,基本上將來源A的結果與來自源B的結果進行比較。對於每種情況,我想將0值轉換爲NA A和B源都有0。否則,我會不必要地誇大測試的自由度。我對R很陌生。

我想在許多情況下進行卡方檢驗,整個數據集最多包含15個物種。在大多數情況下,有2-7個物種需要處理。

感謝您的幫助

+2

執行這些類型操作的兩種方法:使用'?reshape'轉換爲寬數據集並比較'PJ.A'和'PJ.B'。或者分別爲'source =='A''和'B'使用'subset',創建邏輯:PJ0a和PJ0b並將兩對一合併回合並關鍵'case'上的原始數據集。 – AdamO

+0

請使用'dput()'或'dput(head())'而不是使用數據的圖片。 – Aramis7d

+0

好吧,我會盡力在將來 –

回答

0

可以使用tidyverse功能,你可以試試:

df %>% 
group_by(Case) %>% 
mutate(PJ = if_else(sum(PJ) == 0, NA, PJ)) 

這是什麼做的是,如果這一措施是0兩個Source,總和爲0,那麼你將這個值替換爲NA。它消除了將數據轉換爲寬格式的需要。

此外,可能同時看mutate_atmutate多列。

+0

該代碼會引發錯誤。 mutate_impl(.data,dots)中的錯誤: 評估錯誤:'false'必須是長度爲1('condition'的長度),而不是2。 –

+0

無法在沒有數據的情況下進行調試。請編輯該問題以提供可重複的示例。 – Aramis7d