如何解决根据列对行进行排序?
我在 R 中有一个 csv,其中包含下表:
df1
开始 | 效率 | 开始 | 效率 | 结束 |
---|---|---|---|---|
9955 | 0 | 9955 | 25 | 5848 |
474909 | 0 | 474909 | 35 | 3948 |
90342 | 25 | 84384 | ||
94209 | 55 | 99393 |
我想用正确的效率替换与起始列对应的假零效率,以便我的最终结果如下所示:
df2
开始 | 效率 | 结束 |
---|---|---|
9955 | 25 | 5848 |
474909 | 35 | 3948 |
90342 | 25 | 84384 |
94209 | 55 | 99393 |
df1 <- data.frame(
Start = c("9955","474909","90342","94209"),Efficiency = c("0","0","25","55"),Start = c("9955","474909"),Efficiency = c("25","35"),End = c("5848","3948","84384","99393"),stringsAsFactors = F)
df2 <- data.frame(
Start = c("9955","35",stringsAsFactors = F)
解决方法
R 不喜欢具有相同名称的列,因此重复的列名称变为 Start.1
和 Efficiency.1
。您可以将 0 值替换为 NA
并使用 coalesce
。
library(dplyr)
df1 %>%
mutate(across(contains('Efficiency'),na_if,0)) %>%
transmute(Start,Efficiency = coalesce(Efficiency,Efficiency.1))
# Start Efficiency
#1 9955 25
#2 474909 35
#3 90342 25
#4 94209 55
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。