【发布时间】:2018-11-26 21:44:47
【问题描述】:
这是一个很难正确表达的问题,我已经访问了很多关于 SO 的帖子,但没有找到解决这个问题的方法。
我有 2 个尺寸相同的数据框,(实际上它们都是 983 27,但在本例中它们是 10 x 5)。
df1 <- data.frame(v=runif(10),w=runif(10),x=runif(10),y=runif(10),z=runif(10))
df2 <- data.frame(v=runif(10),w=runif(10),x=runif(10),y=runif(10),z=runif(10))
df1
v w x y z
1 0.47183652 0.22260903 0.22871379 0.549137695 0.19310086
2 0.26030258 0.33811230 0.66651066 0.432569755 0.88964481
3 0.99671428 0.87778858 0.76554728 0.486628372 0.28298038
4 0.51320543 0.62279625 0.52370766 0.003457935 0.20230251
5 0.09182823 0.88205170 0.43630438 0.308291706 0.03875207
6 0.29005832 0.96372511 0.65346596 0.411204978 0.22091272
7 0.76790152 0.47633721 0.79825487 0.329127652 0.48165651
8 0.85939833 0.70695256 0.05128899 0.631819822 0.26584177
9 0.14903837 0.09196876 0.56711615 0.443217700 0.33934426
10 0.79928314 0.15035157 0.82297350 0.203435449 0.21088680
df2
v w x y z
1 0.9733651 0.1407513 0.32073105 0.18886833 0.76234111
2 0.9009754 0.1303898 0.48968741 0.45347721 0.78475371
3 0.8460530 0.6597701 0.20024460 0.59079853 0.63302668
4 0.9879135 0.2348028 0.73954442 0.70185877 0.23834780
5 0.5748540 0.4139660 0.79869841 0.02760473 0.99871034
6 0.9164362 0.7166881 0.25280647 0.35890724 0.03500226
7 0.1302808 0.3734517 0.25132321 0.67417021 0.57109357
8 0.1114569 0.7319093 0.57513770 0.11055742 0.86348983
9 0.6596877 0.5261662 0.50796080 0.95685045 0.17689039
10 0.8299933 0.8244658 0.04408135 0.33849748 0.96904940
我需要遍历每一列,并且对于每一天 T,计算两个数据帧同时 (T-1,T-2,T-3...T-n)
步骤如下:
例如在第 T=2 天,考虑 df1[2,1](即 0.26030258)并返回并标记 T=2 之前小于 0.26030258 的任何天.由于我们使用 T=2 作为示例,因此唯一的先验观察是 df1[1,1]。如果 df1[1,1] IF
df2[1,1] 也小于 df2[2,1]
最后,仍然以 T=2 为例,将 1 的数量相加,然后除以观察次数,以生成 T=2 的频率。
同样,我需要为 983 个日期和 27 列执行此操作。我已经尝试了使用rollify 的各种方法,以及包装在sapply 中的各种函数,但是考虑到countif 标准的动态宽度,这具有挑战性,更不用说同时跨2 个DF 执行此操作了。
【问题讨论】:
-
以
T = 2继续您的示例,您希望得到每列的结果(T = 2的频率),还是“将 1 的数量相加”将所有列中的结果相加? -
你能给出预期的输出吗?
-
set.seed对数据的可重复生成也很有用。
标签: r