r - 根据日期修改部分数据框
问题描述
我有两个数据集,我想修改一列的一部分。我的第一个数据集有 4 列、日期和变量类型 A、B 和 C。
Main_df
Date TypeA TypeB TypeC
1/1/2019 0 0 0
2/1/2019 0 0 0
3/1/2019 0 0 0
4/1/2019 0 100 0
5/1/2019 0 110 0
6/1/2019 0 120 0
7/1/2019 0 130 0
8/1/2019 0 140 0
9/1/2019 0 150 0
10/1/2019 100 0 0
11/1/2019 120 0 0
12/1/2019 130 0 0
第二个行数较少,只有一列,在本例中称为 TypeB,应在匹配日期添加到主数据集中的 TypeB 的当前值
df_i
Date TypeB
2/1/2019 120
3/1/2019 130
4/1/2019 140
5/1/2019 150
结果应如下所示:
Main_df
Date TypeA TypeB TypeC
1/1/2019 0 0 0
2/1/2019 0 120 0
3/1/2019 0 130 0
4/1/2019 0 240 0
5/1/2019 0 260 0
6/1/2019 0 120 0
7/1/2019 0 130 0
8/1/2019 0 140 0
9/1/2019 0 150 0
10/1/2019 100 0 0
11/1/2019 120 0 0
12/1/2019 130 0 0
我知道如何修改整个列,而不仅仅是一个部分,尤其是当它必须匹配一个日期时。但如果 R 不能做到这一点,我会感到惊讶。有人可以帮忙吗?
解决方案
使用dplyr
一种方法是将两个数据框绑定在一起,这将为NA
不匹配的列提供,group_by
Date
并sum
删除NA
值。
library(dplyr)
bind_rows(Main_df, df1) %>%
group_by(Date) %>%
summarise_at(vars(TypeA:TypeC), sum, na.rm = TRUE)
# A tibble: 12 x 4
# Date TypeA TypeB TypeC
# <chr> <int> <int> <int>
# 1 1/1/2019 0 0 0
# 2 10/1/2019 100 0 0
# 3 11/1/2019 120 0 0
# 4 12/1/2019 130 0 0
# 5 2/1/2019 0 120 0
# 6 3/1/2019 0 130 0
# 7 4/1/2019 0 240 0
# 8 5/1/2019 0 260 0
# 9 6/1/2019 0 120 0
#10 7/1/2019 0 130 0
#11 8/1/2019 0 140 0
#12 9/1/2019 0 150 0
推荐阅读
- spring-boot - RetryTemplate 在本地工作但不在 UAT 服务器上工作
- python - Selenium webdriver 在 Python shell 中正确导入,但在我编写脚本时不正确
- ibm-midrange - As400 用户不活动 - 捕获自用户上次活动以来的分钟数 (QINACTITV)
- django - 带有多个应用程序的多个数据库的 Django 迁移
- sql - 试图找到如何在两个日期之间从 SQL 数据库中提取数据
- sql - SQL 查询返回 startdate 和 enddate
- java - SpringREST如何验证请求正文中传递的日期没有为约束'com.event.validator.IsValidDate找到验证器
- powershell - Get-ADPrincipalGroupMembership 发生未指定的错误
- html - CSS Flex-box 没有响应
- xpath - XPath:获取具有匹配属性值的元素