我試圖計算數字列的模式。不是數字的列應該有一個「NA」作爲向量中的佔位符。根據目標我也需要百分比。一些示例性數據:R - 按模式和目標計算模式和百分比
c1= c("A", "B", "C", "C", "B", "C", "C")
c2= factor(c(1, 1, 2, 2,1,2,1), labels = c("Y","N"))
d= as.Date(c("2015-02-01", "2015-02-03","2015-02-01","2015-02-05", "2015-02-03","2015-02-01", "2015-02-03"), format="%Y-%m-%d")
x= c(1,1,2,3,1,2,4)
y= c(1,2,2,6,2,3,1)
t= c(1,0,1,1,0,0,1)
df=data.frame(c1, c2, d, x, y,t)
df
c1 c2 d x y t
1 A Y 2015-02-01 1 1 1
2 B Y 2015-02-03 1 2 0
3 C N 2015-02-01 2 2 1
4 C N 2015-02-05 3 6 1
5 B Y 2015-02-03 1 2 0
6 C N 2015-02-01 2 3 0
7 C Y 2015-02-03 4 1 1
我需要爲每個數字列的模式:
mode=as.numeric(c("NA","NA", "NA", 1,2,1))
mode
[1] NA NA NA 1 2 1
和行的百分比的具有t == 1的矢量,當在柱==模式
值[1] NA NA NA 0.33 0.33
和行的百分比的具有t == 1的矢量,當值在列!=模式
[1] NA NA NA 0.75 0.75
我該如何計算這些向量?
我已經找到了狀態最好的是:
library(plyr)
mode_fun <- function(x) {
mode0 <- names(which.max(table(x)))
if(is.numeric(x)) return(as.numeric(mode0))
mode0
}
kdf_mode=apply(kdf,2, numcolwise(mode_fun))
但是,如果有任何非數字列它給出了一個錯誤。
非常感謝! – ElinaJ
這太複雜了,我不得不考慮它......請在你的答案下看到評論。非常感謝你的幫助! – ElinaJ
更新了帖子 – akrun