从R中的表函数中提取值(无因子)

时间:2017-03-31 13:42:35

标签: r dataframe

我有这个数据框

d1  <- c(1, 0,  0,  1,  0,  0,  0,  1)
d2  <- c(0, 1,  0,  1,  1,  0,  0,  0)
d3  <- c(0, 0,  1,  0,  0,  0,  1,  0)
d4  <- c(0, 0,  0,  1,  0,  0,  0,  0)
d5  <- c(0, 0,  0,  0,  0,  0,  1,  0)
d6  <- c(0, 0,  0,  1,  0,  1,  0,  1)
d7  <- c(0, 0,  1,  0,  0,  1,  0,  1)
d8  <- c(1, 0,  0,  0,  0,  0,  0,  1)
d9  <- c(0, 0,  0,  0,  0,  1,  0,  1)
d10 <- c(1, 1,  0,  0,  0,  1,  0,  1)

df  <- as.data.frame(rbind(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10))

str(df)

我得到V8 == 1的所有行,并找到每列的相对频率(例如第2列,V2):

table(df[which(df$V8==1),][2])/sum(as.numeric(df[which(df$V8==1),]$V8))



        0         1 
0.8333333 0.1666667 

我的问题是如何单独获得每个相对频率,让我们说它将它设置为一个新变量。我发现了这个

  

How to extract value from table function in R

但它在我的情况下不起作用,因为0和1是数字。

table(df[which(df$V8==1),][2])/sum(as.numeric(df[which(df$V8==1),]$V8))["1"]

2 个答案:

答案 0 :(得分:0)

使用as.numeric,然后,将它们更改为比率 数字0和1用提取     as.numeric(名称(表(数据))) 数字64和17用     计数&LT; -as.numeric(表(数据)) 然后     比率&LT; -COUNTS /总和(计数)

答案 1 :(得分:0)

不完全确定你要做什么,但......

sapply(subset(df, V8==1), function(x) sum(x==1)/length(x))