簡體   English   中英

在R中,計算二項式值的相對頻率(按多列分組),並使用此“摘要”創建一個新的數據集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM