程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了识别重复行并仅将特定列设置为零大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决识别重复行并仅将特定列设置为零?

开发过程中遇到识别重复行并仅将特定列设置为零的问题如何解决?下面主要结合日常开发的经验,给出你关于识别重复行并仅将特定列设置为零的解决方法建议,希望对你解决识别重复行并仅将特定列设置为零有所启发或帮助;

我尝试识别数据框中的重复行,并据此仅将重复行的特定列 x 设置为 0。如果列 ID 和 key 相同,我尝试将列 x & y 设置为零,如果重复行也有相同的数字(大于 0)。

df <- data.frame(x=c(1,3,2,0),y=c(1,1,4,ID=c('ID1','ID1','ID2','ID2'),key=c('key1','key1','key2','key3'))
df[order(df$ID),]
duplicates <- df[duplicated(df[c('ID','key')]) & (df$x != 0 | df$y != 0),]

这样,我能够识别重复的行,但现在我只想将特定列(x 或 y)设置为零,如果也有相同的值。我用 ifelse 语句尝试过,但我无法得到正确的结果。

所需的输出看起来像这样(只有 x 列中的一个值和 y 列中的树值设置为 0):

output <- data.frame(x=c(1,'key3'))
output[order(output$ID),]

非常感谢您的帮助!

解决方法

library(dplyr)


df %>%
  group_by(id,key,y) %>%
  mutate(y = ifelse(sequence(n()) > 1,y)) %>%
  ungroup() %>%
  group_by(id,X) %>%
  mutate(x = ifelse(sequence(n()) > 1,X))

编辑:这是您要找的吗?让我知道你的想法,因为我不确定你到底在问什么

大佬总结

以上是大佬教程为你收集整理的识别重复行并仅将特定列设置为零全部内容,希望文章能够帮你解决识别重复行并仅将特定列设置为零所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。