我有一个包含 4 个重要列的大型数据框 (my_DF):ID (1-->100)、YEAR (2000, 2001, 2002, 2003, 2004, 2005), MONTH (January --> December), LENGHT (continuous values)从 0.1 到 1.0)。像这样的东西:
YEAR MONTH ID LENGHT
1 2000 january S1 0.2
2 2000 january S1 0.3
3 2000 january S1 0.1
4 2000 january S2 0.5
5 2000 january S2 0.3
6 2000 february S1 0.9
7 2000 february S1 0.4
8 2000 february S1 0.6
9 2000 february S3 0.4
10 2000 february S3 0.3
11 2000 march S1 0.7
...
我需要在数据框中添加一个新列,填充每个独特情况的中值长度,因此对于每个 ID、YEAR 和 MONTH 值。
由于聚合,我成功获得了我正在寻找的值:
agg <- aggregate(my_DF["LENGHT"], by = list(my_DF$YEAR, my_DF$MONTH, my_DF$ID), median)
通过这种方式我获得了我想要的值,但是,当然,这只是创建一个新的数据框。我没有找到一种快速的方法将数据帧“agg”的值粘贴到数据帧“my_DF”的新列中,基于 YEAR、MONTH 和 ID 对应关系。
例如,我想获得类似的东西:
YEAR MONTH ID LENGHT MONTHLY_LENGHT_MEDIAN
1 2000 january S1 0.2 0.2
2 2000 january S1 0.3 0.2
3 2000 january S1 0.1 0.2
4 2000 january S2 0.5 0.4
5 2000 january S2 0.3 0.4
6 2000 february S1 0.9 0.6
7 2000 february S1 0.4 0.6
8 2000 february S1 0.6 0.6
9 2000 february S3 0.4 0.35
10 2000 february S3 0.3 0.35
11 2000 march S1 0.7 0.7
所以,我想知道条件命令是否适合我的情况(如果,ifelse ...)。
不幸的是,我不擅长这些命令……我该怎么办?感谢您的帮助!