使用dplyr为数据框添加最小审定年份列

假设您有两个数据框:

  • df_area:包含品种名称(CropName)列。
  • df_hybrid:包含品种名称和审定年份列(相同品种名称可能会存在多个审定年份)。

这两个数据框的行数和列名都不相同。现在您想利用dplyr包为df_area添加一个名为FirstYear的新列,该列包含每个品种名称在df_hybrid中的最小审定年份。如果查找匹配到多个审定年份,则返回最小值;如果没有匹配到,则返回空值。

您可以使用以下代码实现:

library(dplyr)

df_area <- df_area %>%
  left_join(df_hybrid %>% 
              group_by(CropName) %>% 
              summarize(FirstYear = min(ApproveYear)),
            by = 'CropName')

解释:

  1. group_by(CropName):首先,使用group_by函数对df_hybridCropName进行分组。
  2. summarize(FirstYear = min(ApproveYear)):然后,使用summarize函数计算每个分组的最小审定年份(ApproveYear),并将结果命名为FirstYear
  3. left_join(..., by = 'CropName'):最后,使用left_join函数将df_area和上面计算得到的结果按CropName进行连接。连接方式为左连接,即保留df_area的所有行,如果df_hybrid中没有与之匹配的行,则FirstYear列的值为NA。

注意:

  • 代码假设CropName列在两个数据框中的名称是完全一致的。如果存在大小写、空格等差异,需要先进行处理再进行连接。
  • 如果df_hybrid中存在多个相同品种的记录,但它们都具有相同的审定年份,则代码将返回该年份。

希望以上解释对您有所帮助。如果您还有其他问题,请随时提问。


原文地址: https://www.cveoy.top/t/topic/nHob 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录