首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在R中使用min()查找最年轻的子代

在R中使用min()查找最年轻的子代
EN

Stack Overflow用户
提问于 2021-04-19 21:32:51
回答 2查看 44关注 0票数 0

我有一个谱系数据集,为了进行一些计算和估计,我需要找到一个人最年轻后代的出生年份。我尝试过min()函数,我认为它和match()一起在匹配父母ID和个人ID方面扮演着重要的角色,但这只给了我一个答案。你知道我怎么解决这个问题吗?

代码语言:javascript
代码运行次数:0
运行
复制
id <- 1:30
momid <- c(NA, NA, NA, NA, NA, NA, NA, NA, NA, 1,2,1,2,6,8,6,10,11,13,23,19,16,13,16,20,19,16,19,20,23)
dadid <- c(NA, NA, NA, NA, NA, NA, NA, NA, NA, 3,4,5,5,7,4,9,7,7,14,24,7,15,18,18,17,21,14,18,21,17)
birthyear <- c(1975, 1975, 1976, 1977, 1977, 1977, 1977, 1978, 1978, 1980, 1981, 1982, 1982, 1984, 1984, 1985, 1985, 1979, 1988, 1989, 1990, 1990, 1991, 1992, 1993, 1993, 1993, 1995, 1995, 1996)
df <- data.frame(id, momid, dadid, birthyear)

min(df$birthyear[match(df$id, df$momid)])
[1] NA
with(df, min(birthyear[match(momid, id)]))
[1] NA
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-20 15:10:09

这是@GKi的答案,所以这不是我自己的答案。但GKi将其作为评论发布,因此我将其重新发布为结束问题的答案。

代码语言:javascript
代码运行次数:0
运行
复制
df$firstoffspring <- sapply(df$id, function(i) min(df$birthyear[df$momid == i | df$dadid==i], na.rm=TRUE))
票数 0
EN

Stack Overflow用户

发布于 2021-04-19 21:35:41

尝试启用na.rm = TRUE

代码语言:javascript
代码运行次数:0
运行
复制
> min(df$birthyear[match(df$id, df$momid)],na.rm = TRUE)
[1] 1979
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67163025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档