让我有一个由数据框组成的列表(df1,df2,.. dfn)。
每个数据框都有一个名为head1的列,它包含二进制元素(0和1)。
例如
list1[[1]]$head1
是11010001
list1[[2]]$head1
是1000100000
其中list1[[1]]
为df1
而list1[[2]]
为df2
。
我想获得一个数据帧,它在list1的每个数据帧的head列中返回1的比例。
对于上面的例子:
df[1,]=0.5
(四个0和四个1)
df[2,]=0.2
(八个0和两个1)
我怎么能用R做到这一点?我会很高兴得到任何帮助。非常感谢。
答案 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"))