![](/img/trans.png)
[英]Dataframe manipulation in R - Assign a value to nth row based on row values numbers
[英]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.table
非data.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.