R语言dplyr包:为数据框添加最小审定年份列
使用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')
解释:
group_by(CropName):首先,使用group_by函数对df_hybrid按CropName进行分组。summarize(FirstYear = min(ApproveYear)):然后,使用summarize函数计算每个分组的最小审定年份(ApproveYear),并将结果命名为FirstYear。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 著作权归作者所有。请勿转载和采集!