[英]In R, compute relative frequency of binomial values, grouped by multiple columns, and create a new dataset with this 'summary'
我有一個數據集(名為“ gala”),其列為“天”,“樹”,“ Trt”和“可計數”。 數據是隨着時間的推移而收集的,因此每個編號的樹都是同一棵樹,每種處理在整天中都是相同的。 對於每個處理重復樹編號(例如,對於多個處理,樹“ 1”)。 我想知道“可計數”列值的比例/頻率。 我已經將“可計數”列中的值轉換為二項式(“ 0”和“ 1”)。
我想為“可計數”列計算“ 1”與“ 0”的相對頻率,對於每天每種處理的每棵樹 (例如,如果我有八個1和兩個0,則新列值為“ 0.8”以在該天對該處理的樹的一個值進行總結 ,並將這些結果輸出到一個新的數據框中,該數據框還包括原始的day,Tree和Trt值。
我一直沒有嘗試從其他Stack Overflow答案中編寫代碼的科學怪人,但是我無法使代碼正常工作。 許多人使用“和”,但我不希望求和,我只想R將“ 0”和“ 1”像分類值一樣對待,並給我每個數據子集的相對比例 。 如果我錯過了,很抱歉,請通過此答案的鏈接通知我。 我是R和R的新手,我不太了解如何應用與我想做的事情不直接相關的其他代碼。
根據我對其他類似問題的了解,dplyr似乎是我最好的選擇。 到目前為止,這是我所擁有的,但是我不斷收到各種錯誤:
library(dplyr)
RelativeFreq <-
(gala %>%
group_by(Day, Tree, Trt) %>%
summarise(Countable) %>%
mutate(rel.freq=n/length(Countable)))
我也嘗試過此方法,但沒有成功:
RelativeFreq <- gala[,.("proportion"=frequency(Countable[0,1])), by=c("Day","Tree","Trt")]
任何幫助是極大的贊賞。 謝謝!
您可以使用data.table:
# create fake data
set.seed(0)
df <- expand.grid(Day = 1:2,
Tree = 1:2,
Trt = 1:2)
df<- rbind(df, df, df)
library(data.table)
# make df a data.table
setDT(df)
# create fake Countable column
df[, Countable := as.integer(runif(.N) < 0.5)]
RelativeFreq <- df[, list(prop = sum(Countable)/.N), by = list(Day, Tree, Trt)]
RelativeFreq
Day Tree Trt prop
1: 1 1 1 0.3333333
2: 2 1 1 0.3333333
3: 1 2 1 0.6666667
4: 2 2 1 0.6666667
5: 1 1 2 0.3333333
6: 2 1 2 0.3333333
7: 1 2 2 0.6666667
8: 2 2 2 0.0000000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.