數據幀中統計NAs我想再次問你一個問題。它基本上是關於[R]中的數據幀,NAs和表格功能。「說服」列表功能在[R]
我有這個數據框。我以前的問題已經用過了。它故意看起來這個簡單,我真正的「東風」數據幀是更大的實際又一次,我不願騷擾與大型數據庫的人......所以,我的數據庫:
id <-c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3)
a <-c(3,1,3,3,1,3,3,3,3,1,3,2,1,2,1,3,3,2,1,1,1,3,1,3,3,3,2,1,1,3)
b <-c(3,2,1,1,1,1,1,1,1,1,1,2,1,3,2,1,1,1,2,1,3,1,2,2,1,3,3,2,3,2)
c <-c(1,3,2,3,2,1,2,3,3,2,2,3,1,2,3,3,3,1,1,2,3,3,1,2,2,3,2,2,3,2)
d <-c(3,3,3,1,3,2,2,1,2,3,2,2,2,1,3,1,2,2,3,2,3,2,3,2,1,1,1,1,1,2)
e <-c(2,3,1,2,1,2,3,3,1,1,2,1,1,3,3,2,1,1,3,3,2,2,3,3,3,2,3,2,1,4)
df <-data.frame(id,a,b,c,d,e)
df
我已成功地計算的分佈數字出現在列'b'到'e'中,但同時考慮到事實,即這些分佈應該由'id'列中的id號「分組」。它工作正常,檢查 - >
matrix(matrix(unlist(lapply(df[,(-(1))],
function(x) tapply(x,df$id,tabulate,
nbins=nlevels(factor(df[,2])))) [[1]])),
ncol=3,nrow=3,byrow=TRUE)
matrix(matrix(unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,3])))) [[2]])),ncol=3,nrow=3,byrow=TRUE)
matrix(matrix(unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,4])))) [[3]])),ncol=3,nrow=3,byrow=TRUE)
matrix(matrix(unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,5])))) [[4]])),ncol=3,nrow=3,byrow=TRUE)
matrix(matrix(unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,6])))) [[5]])),ncol=4,nrow=3,byrow=TRUE)
現在我的問題是:如果我的數據幀都包含在這裏和那裏,什麼NA值,如果我想我的內置功能製表收集這些來港定居,以及什麼?那麼,如果我想讓它計算我從這些NAS獲得的事件數量呢?
下面是與NAS我修改的數據幀:
id <-c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3)
a <-c(NA,1,3,3,1,3,3,3,3,1,3,2,1,2,1,3,3,2,1,1,1,3,1,3,3,3,2,1,1,3)
b <-c(3,2,1,1,1,1,1,1,1,1,1,2,1,3,2,1,1,1,2,1,3,1,2,2,1,3,3,2,3,2)
c <-c(1,3,2,3,2,1,2,3,3,2,2,3,NA,2,3,3,3,1,1,2,3,3,1,2,2,3,2,2,3,2)
d <-c(3,3,3,1,3,2,2,1,2,3,2,2,2,1,3,1,2,2,3,2,3,2,3,2,1,1,1,1,1,2)
e <-c(2,3,1,2,1,2,3,3,1,1,2,1,1,3,3,2,1,1,3,3,2,2,3,3,3,2,3,NA,1,4)
df <-data.frame(id,a,b,c,d,e)
df
起初,我想是這樣的:
unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,2],exclude=NULL)))) [[1]])
你看,我做的唯一的事情是,我嘗試着將這個exclude=NULL
的事。
至少我的代碼意識到我有4個不同層次的列a
(1,2,3,NA)
而不僅僅是三個(1,2,3)
。檢查它在這裏:
nlevels(factor(df[,2], exclude=NULL))
但你看到在某種程度上它不能計算NA的結果。它說
3 0 6 0 4 3 3 0 4 1 5 0
取而代之的是正確的:
3 0 6 1 4 3 3 0 4 1 5 0
或者在情況:
unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,4],exclude=NULL)))) [[3]])
它說
2 4 4 0 2 3 4 0 1 5 4 0
而不是正確
2 4 4 0 2 3 4 1 1 5 4 0
等
是否有人有任何想法如何「說服」功能的平板狀算來港?它有可能嗎?
非常感謝,有一個愉快的週末,
拉茲洛
-1這也發佈在r-help – 2011-03-19 15:15:33
@G。格洛騰迪克---加博爾,這是一個不當使用投票系統恕我直言。投票機制旨在確定有用或清楚的Q與沒有用或不清楚的Q. SO是R-R的獨立實體如果Q在這裏和這裏發佈,爲什麼它應該重要?這不像是@Laszlo用他的問題垃圾郵件了幾個SE網站。 – 2011-03-19 15:19:37
另外,誰投票結束了「不是真正的Q」,你怎麼看到這個意見?一旦你通過了超顯式代碼,Q就相當清楚了。 @拉斯洛希望要計算「NA」以及其他因素水平。 – 2011-03-19 15:21:13