【问题标题】:Calculating from a column of dataframes within a list从列表中的一列数据框计算
【发布时间】:2016-09-06 07:04:30
【问题描述】:

我有一个数据框,我根据其日期将其拆分为一个列表。 拆分后,我计划计算两件事:(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 = list splitDate 中所有数据帧的列 DM 的平均值列表。但是我不想硬编码选择每个数据帧,因为可变日期的数量是未知的。是否有一个函数可以在包含 DM 列的所有数据帧上运行平均值?

【问题讨论】:

  • 谢谢 Akrun,我已经编辑了整篇文章;请告诉我1
  • 我在下面发布了一个解决方案。请检查是否有帮助

标签: r list dataframe split


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 2021-11-09
    相关资源
    最近更新 更多