我有一个包含三列的数据框df df数据框:ID,Range和Min_Range(这最后一列是我要查找的结果)。我想通过将df $ Range中的非NA值替换为来自Min_Range_df数据帧Min_Range_df数据集的对应(至ID)Min_Range_df $ Min_Range值来获取df $ Min_Range列。另一种看待它的方法是我想按组(ID)获得最小的df $ Range,并用最小的替换Range值。
df <- matrix(data=c(1,1,1,2,2,3,3,3,3,4,4,10,15,20,30,35,40,45,50,NA,NA,NA,10,10,10,30,30,40,40,40,NA,NA,NA), ncol = 3)
colnames(df) <- c("ID", "Range", "Min_Range")
Min_Range_df <- matrix(data= c(1,2,3,10,30,40), ncol=2)
colnames(Min_Range_df) <- c("ID", "Min_Range")
谢谢!!
您可以使用dplyr
:
df %>%
group_by(ID) %>%
mutate(Min_Range_New = ifelse(is.na(Range), NA, min(Range, na.rm=TRUE)))
哪个返回
ID Range Min_Range Min_Range_New
<dbl> <dbl> <dbl> <dbl>
1 1 10 10 10
2 1 15 10 10
3 1 20 10 10
4 2 30 30 30
5 2 35 30 30
6 3 40 40 40
7 3 45 40 40
8 3 50 40 40
9 3 NA NA NA
10 4 NA NA NA
11 4 NA NA NA
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句