r - R中是否有任何捷径可以根据以下数据找到最小最大值?
问题描述
我有两个数据集。第一个是这样的:
code | name
115 | A
120 | B
125 | A
130 | C
140 | A
第二个是这样的:
code | Year
115 | 2015
140 | 2020
120 | 2017
130 | 2019
125 | 2011
根据“代码”列,我想找到每个名称的年份范围,如下所示:
code | Year | Range
115 | 2015 | 9
140 | 2020 | 9
120 | 2017 | 0
130 | 2019 | 0
125 | 2011 | 9
其实9是2020-2011
我的目标是编写一个循环次数最少的函数,以便快速处理大量数据。
解决方案
left_join
数据框由code
group_by
name
- 使用
max
和min
df <- tribble(
~code, ~name,
115, "A",
120, "B",
125, "A",
130, "C",
140, "A")
df1 <- tribble(
~code, ~Year,
115, 2015,
140, 2020,
120, 2017,
130, 2019,
125, 2011)
df2 <- df1 %>%
left_join(df, by="code") %>%
group_by(name) %>%
mutate(Range = max(Year) - min(Year)) %>%
select(-name)
df2
输出:
code Year name Range
<dbl> <dbl> <chr> <dbl>
1 115 2015 A 9
2 140 2020 A 9
3 120 2017 B 0
4 130 2019 C 0
5 125 2011 A 9
推荐阅读
- python-3.x - 将多个列表传递给 pandas.Series
- python - 如何从一列中计算 n 克
- php - 使用 PHP over HTTP 运行后台 bash,退出时带有陷阱
- c++ - c ++函数重新定义(代码不起作用 - 逻辑错误)
- git - 让 Atom 在提交前等待
- r - 使用带有 xml2 的管道运算符编写 XML
- solaris - DBX 在使用 -g 构建的共享库中显示不正确的值
- c# - 在处理 WinSCPnet.dll FileTransferProgress 时,如何在 SSIS 脚本任务中使用 DTS.Events.FireInformation()?
- java - URLDecode.decode 方法在 Java 中无法按预期工作
- autocad - DXF 代码 - 3D 折线