r - R中的带状变量
问题描述
对于以下代码:
x <- data.frame(year = c(1730, 1860, 1941, 2011))
century_bands <- data.frame(min_year = c(1700, 1800, 1900, 2000),
max_year = c(1799, 1899, 1999, 2099),
century_name = c("18th", "19th", "20th", "21st"))
对于 中的每个值,我想x
使用 中的信息计算出它所属的世纪的名称century_bands
。我无法想象这很难实现,但我无法弄清楚。有人可以帮忙吗?有没有办法使用这个dplyr
包(我经常使用它)或者其他一些技术?
这只是现实生活中的一个非常简单的例子,乐队在 100 年的步长上不是很整齐——所以不幸的是,任何基于将年份除以 100 等的捷径都行不通。
谢谢你。
解决方案
利用的一种选择fuzzyjoin
可能是:
fuzzy_left_join(x, century_bands,
by = c("year" = "min_year",
"year" = "max_year"),
match_fun = list(`>=`, `<=`))
year min_year max_year century_name
1 1730 1700 1799 18th
2 1860 1800 1899 19th
3 1941 1900 1999 20th
4 2011 2000 2099 21st
推荐阅读
- javascript - 材质-UI | 在 makeStyles 中使用“主题”
- c# - 无法在运行时更改游戏对象的共享材质,尽管能够通过脚本找到它
- vue.js - Vue JS 技术,用于在应用程序加载时从不同入口点获取数据
- typescript - 打字稿中空对象类型 {} 的目的是什么?
- android - 如何找到点击的地方或路径 VectorDrawable
- python - 如何在 seaborn FacetGrid 的条形顶部添加百分比?
- python - 如何制作一个按索引从列表中删除元素的函数
- javascript - 在 JavaScript 中使用 for 循环按顺序显示数字
- javascript - Popper.js 库如何在 Vue 实例中运行
- python - Openpyxl 保存损坏/不可读的文件。没有报错,只是shell重启