簡體   English   中英

根據R中的行值為數據框中的每一行分配值

[英]Assign value for each row in dataframe based on row values in R

我試圖根據直到特定日期的數據框的子集來計算列的平均值。 我創建了一個數據框,其中包含所有要計算該日期的平均值的日期。

例如,我有一個包含以下內容的數據框:

> df
      date  value
2019-01-01      4
2019-01-02      2
2019-01-02      3
2019-01-03      7

以及包含日期的數據框:

> a

      date   

2019-01-01   
2019-01-02   
2019-01-03 

我想根據df的值在該日期之前取得均值。

> a

      date  mean

2019-01-01     4 
2019-01-02     3   
2019-01-03     4

我只是嘗試

calculate_mean <- function(input) {
  sub <- subset(df, date < input)
  return(mean(sub$value))
}
a$mean <- calculate_mean(a$date)

取而代之的input是該行的一個日期是在日期的整個列表a 因此,每一行的平均值相同。 我如何只傳遞該行的單個日期。

現在,我已經用一個骯臟的for循環解決了它,我認為這不應該是解決方案。

選項是與數據data.tabledata.table

library(data.table)
setDT(df)[a, .(mean = mean(value)), on = .(date <= date), by = .EACHI]
#          date mean
#1: 2019-01-01    4
#2: 2019-01-02    3
#3: 2019-01-03    4

數據

df <- structure(list(date = structure(c(17897, 17898, 17898, 17899), class = "Date"), 
    value = c(4L, 2L, 3L, 7L)), class = "data.frame", row.names = c(NA, 
-4L))

a <- structure(list(date = structure(c(17897, 17898, 17899), class = "Date")), row.names = c(NA, 
-3L), class = "data.frame")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM