列表中特定数据帧列中的频率 - R.

时间:2016-03-20 19:52:25

标签: r list dataframe

让我有一个由数据框组成的列表(df1,df2,.. dfn)。

每个数据框都有一个名为head1的列,它包含二进制元素(0和1)。

例如

list1[[1]]$head111010001

list1[[2]]$head11000100000

其中list1[[1]]df1list1[[2]]df2

我想获得一个数据帧,它在list1的每个数据帧的head列中返回1的比例。

对于上面的例子:

df[1,]=0.5  

(四个0和四个1)

df[2,]=0.2  

(八个0和两个1)

我怎么能用R做到这一点?我会很高兴得到任何帮助。非常感谢。

1 个答案:

答案 0 :(得分:2)

我们可以将lapply()mean()结合使用,以获得1&#39列表中同一列中data.frame的比例; S

lapply(list1, function(x) mean(x[,"head1"]))
#$df1
#[1] 0.5
#
#$df2
#[1] 0.2

数据

list1 <- structure(list(df1 = structure(list(head1 = c(1, 1, 0, 1, 0, 
0, 0, 1)), .Names = "head1", row.names = c(NA, -8L), class = "data.frame"), 
    df2 = structure(list(head1 = c(1, 0, 0, 0, 1, 0, 0, 0, 0, 
    0)), .Names = "head1", row.names = c(NA, -10L), class = "data.frame")), .Names = c("df1", 
"df2"))