合并数据框中的行,其中行不相交且包含 NA

2023-12-22

我有一个有两行的数据框:

| code | name  | v1 | v2 | v3 | v4 |
|------|-------|----|----|----|----|
| 345  | Yemen | NA | 2  | 3  | NA |
| 346  | Yemen | 4  | NA | NA | 5  |

有没有一种简单的方法来合并这两行? 如果我将“345”重命名为“346”,事情会变得更容易吗?


您可以使用aggregate http://stat.ethz.ch/R-manual/R-devel/library/stats/html/aggregate.html。假设您要合并列中具有相同值的行name:

aggregate(x=DF[c("v1","v2","v3","v4")], by=list(name=DF$name), min, na.rm = TRUE)
   name v1 v2 v3 v4
1 Yemen  4  2  3  5

这就像 SQLSELECT name, min(v1) GROUP BY name. The min函数是任意的,你也可以使用max or mean,它们都从 NA 和非 NA 值返回非 NA 值,如果na.rm = TRUE。 (类似 SQLcoalesce()如果 R 中存在该函数,听起来会更好。)

但是,您应该首先检查给定的所有非 NA 值是否name是相同的。例如,运行aggregate两者都与min and max并比较,或运行它range.

最后,如果你有更多的变量而不仅仅是 v1-4,你可以使用DF[,!(names(DF) %in% c("code","name"))]定义列。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合并数据框中的行,其中行不相交且包含 NA 的相关文章

随机推荐