【发布时间】:2021-05-28 17:40:09
【问题描述】:
我有一个数据框,它的快照如下所示。
structure(list(cyear = c(1925, 1925, 1925, 1925, 1925, 1926, 1926, 1926, 1926, 1926, 1927, 1927, 1927, 1927, 1927, 1928, 1928, 1928, 1928, 1928),
holdcyear = c(1925, 1926, 1927, 1928, 1929, 1925, 1926, 1927, 1928, 1929, 1925, 1926, 1927, 1928, 1929, 1925, 1926, 1927, 1928, 1929),
andiv = c(6.11, 7.19, 8.26, 7.88, 6.58, 5.26, 3.07, 2.87, 3.28, 4.87, 6.87, 5.97, 4.38, 5.74, 5.94, 5.52, 4.53, 5.05, 5.40, 5.51)),
row.names = c(NA, -20L), class = c("tbl_df", "tbl", "data.frame"))
我想过滤数据框。举个例子,我想过滤一个新的数据框,这样我就有了 cyear 等于某个值,holdcyear 等于 cyear + 1 的所有值。最终结果应该如下所示:
structure(list(cyear = c(1925, 1926, 1927, 1928),
holdcyear = c(1926, 1927, 1928, 1929),
andiv = c(7.19, 2.87, 5.74, 5.51)),
row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"))
因此,过滤应该在 cyear 比 holdcyear 少一年时进行,andiv 的值将被保存用于新的数据帧。
我曾尝试在 dplyr 的过滤器函数中使用各种算术函数,但每次我都得到错误的数据帧。有人可以为此提供解决方案吗?
【问题讨论】: