0
我正在爲大量數據組做一些相當基本的描述性統計。我寫了一個函數來嘗試獲取我需要的統計信息。在數據框中創建一個新行,其中一個元素是一個因子,另一個數字
我想在數據框的底部創建一個新行,其中一個元素是一個因子(「總數」),另一個元素是數字(其他行的總和)。
下面是該代碼的一個例子:
創建數據框
df <- data.frame(
pop = c(201:250),
age = factor(rep(c("20-29", "30-39", "40-49", "50-59", "60-69"), 10)),
year = factor(rep(c(2012, 2013, 2014, 2015, 2016), 10)))
寫一個函數來做到聚集
DiabMort_fun <- function(VDRpop, VDRage, nyrs, nrows) {
Aggregate_fun <- function(pop, ag1, nyrs, nrows, names_list) {
popbylist <- data.frame(aggregate(pop, by = list(Category = ag1), FUN=sum))
popbylist$mean <- (popbylist$x/nyrs)
colnames(popbylist) = names_list
popbylist[nrows,] <- c("total", sum(popbylist[2]), sum(popbylist[3]))
return(popbylist)
}
VDRbyage <- Aggregate_fun(pop = VDRpop, ag1 = VDRage, nyrs = nyrs, nrows = nrows,
names_list = c("Age", "Num_pop_VDR", "Mean_pop_VDR"))
return(VDRbyage)
}
運行該功能
test <- DiabMort_fun(VDRpop = df$pop, df$age,
nyrs = 5, nrows = 5)
當我r未此,我得到以下錯誤消息:
警告消息: 在
[<-.factor
(*tmp*
,ISEQ,值= 「總」): 無效因子水平,NA產生
的「總計「現在列C(NA,11275,2255)
我想什麼它是爲C(」總」,11275,2255)
有誰知道如何在這個有趣的創建一個新的行這將擴大因素水平以包括「全部」?該函數中的相關代碼:
popbylist[nrows,] <- c("total", sum(popbylist[2]), sum(popbylist[3]))
感謝
這聽起來你正在努力使R工作像Excel電子表格,這顯然是不適當的。 – jsb
您不能在data.frame的底部輸入類似的總數。您應該計算從data.frame中分離出的總數。對象類型是按變量(列)定義的,而不是按行定義的。 – jsb