【发布时间】:2016-09-13 05:54:17
【问题描述】:
我有表格,代码如下:
data <- data.frame(Subject = c(0,0,0,1,2,2),
Class = c("Apple","Apple","Apple","Orange","Orange","Orange"),
name = c(1,1,1,0,1,1),
name1 = c(0,1,1,1,1,1),
name2 = c(1,1,1,0,0,1))
我想找到每个班级和每个科目的每个变量的平均值,并将其列为表格。例如,该表将首先具有主题的平均值; 0 表示平均 8/9,2 表示平均 5/6。其次计算班级平均值;橙色,平均 2/3。最后分解 name、name1 和 name2 的平均值。
我已经尝试了下面的代码,首先将标题存储为列表,然后使用 lapply 按主题和类别对其进行排序。但它不起作用。
cols = c(head(data))
data[,lapply(.SD[,cols,with=FALSE],mean),by=Class|Subject]
【问题讨论】:
-
可能是
setDT(data)[, lapply(.SD, mean), by = .(Class, Subject)]?阅读data.table语法可能是个好主意。请参阅"Getting started" wiki。 -
列名不在头部;使用
names(data)。
标签: r data.table mean