从列表中的一列数据帧计算

时间:2016-09-06 07:04:30

标签: r list dataframe split

我有一个数据框,我根据其日期分成一个列表。 一旦拆分,我计划计算两件事:(i)最近日期和拆分日期之间的差异,以及(ii)新创建的列表splitDate中数据框内的列的平均值。

此数据框有2个日期,因此它创建了2个数据框的列表。

rawDM <- data.frame(DM =c(1,2,3,4,5,6,7,8,9,10),
                    Date=c.Date(2015-11-22, 2015-11-22, 2015-11-22, 2015-11-22, 2015-11-22, 2015-11-20, 2015-11-20, 2015-11-20, 2015-11-20, 2015-11-20))

rawDM$Created.Date <- as.Date(rawDM$Date, format="%d/%m/%Y")
maxDate<-max(rawDM$Created.Date) #calculates most recent date

rawDM$amendDate<- maxDate-rawDM$Created.Date # amount of days from max date
splitDate <- split(rawDM, list(rawDM$amendDate)) #splits based off of amended dates
rawDM <- subset(rawDM, select = c(DM, Created.Date, amendDate))

splitMean <- as.list(mean, splitDate$*$DM) # this is where I am having issues

预期结果将具有splitMean =列表splitDate内所有数据帧的列DM的平均值列表。但是我不想硬编码选择每个数据帧,因为变量日期的数量是未知的。在包含列DM的所有数据帧上是否有运行均值的函数?

1 个答案:

答案 0 :(得分:0)

我们需要遍历'splitDate',提取'DM'列并获取mean。为此,我们可以使用其中一个应用系列函数,如sapply/vapply

vapply(splitDate, function(x) mean(x$DM, na.rm=TRUE), 0)
# 0 2 
# 8 3