我在R中使用一个数据集,它有一个ID号(ID)、提交数据的年份(Year)、一些其他数据(与我的问题无关,但可以将它们视为“列”)以及在我们系统上注册的日期(DateR)。
这个daterR是从我使用的数据集中自动生成的,应该表示ID号出现在我们系统上的“最早”日期。
然而,由于数据如何被提取的某种问题,我无法得到修复,日期被记录为每年更新的新日期,而不仅仅是最早的日期。
因此,我的目标是创建一个脚本来重新处理数据并执行以下两项检查:
首先,它检查行并确定哪些行具有匹配的ID号。其次,它应用日期列中所有匹配ID号的“最早”日期。
下面是我正在使用的数据集示例
| 编号|识别码1|提交年份|数据|日期|
| - ------|- ------|- ------|- ------|- ------|
| 1个|小行星123|二〇一七年|一百|2017年3月22日|
| 第二章|小行星123|二〇一八年|一百|2018年3月22日|
| 三个|小行星123|二○一九年|一百|2019年3月22日|
| 四个|小行星2222|二〇一八年|一百|2018年3月22日|
| 五个|小行星2222|二○一九年|一百|2019年3月22日|
这是我希望它看起来像(我已经加粗了更改的数字清晰)
| 编号|识别码1|提交年份|数据|日期|
| - ------|- ------|- ------|- ------|- ------|
| 1个|小行星123|二〇一七年|一百|2017年3月22日|
| 第二章|小行星123|二〇一八年|一百|二零一七年三月二十二日|
| 三个|小行星123|二○一九年|一百|二零一七年三月二十二日|
| 四个|小行星2222|二〇一八年|一百|2018年3月22日|
| 五个|小行星2222|二○一九年|一百|二零一八年三月二十二日|
我为这个参考搜索的大多数参考问题要么用其他列(如If data present, replace with data from another column based on row ID)中的值替换数据,要么使用从其他 Dataframe (如Replace a value in a dataframe by using other matching IDs of another dataframe in R)中提取的替换值。
如果可能的话,我更愿意住在丹麦。
我最好先从
数据%〉% group_by(ID 1,提交年份)%〉% mutate(跨越(c(DateR),
我知道我可以使用匹配功能...但从这一点上我只是画了一个空白。
因此,我希望得到关于如何:
如果日期与ID 1值匹配,则有条件地更改日期,其次,将所有日期更改为日期列(DateR)中最早的值。
谢谢你的时间。
2条答案
按热度按时间sf6xfgos1#
试试这个:
这涉及到将
DateR
转换为"真正的"Date
类对象,其中数值比较(如min
)是明确和正确的。数据
hwamh0ep2#
下面是在使用
arrange
对年份进行排序之后使用dplyr
的first
函数的类似方法: