首页 > 解决方案 > 用 NA 替换一行数据框中的第一个重复数据

问题描述

我发现我的数据框“数据”中的行通常第一个元素等于第二个元素。我想替换与 NA 重复的第一个元素并保留第二个元素。

我的数据框“数据”有 3 列 c1、c2 和 c3,如下所示

c1 c2 c3
1  1  4
5  2  9
3  1  8
7  7  2
9  9  1

我试图运行这段代码

for (i in 1:length(Data)) {
Data[i,1]<- if (Data[i,1]==Data[i,2]) NA else Data[i,1]
}

但它不起作用。我想使用 Data[i;1] 而不是 Data$c1[i] 因为我使用 merge() 循环来重新创建我的数据框,并且每次重新创建数据框时列的名称都会更改。
我想替换 c1 列中的任何值,这些值在 c2 列的同一行中被 NA 重复,如下所示

c1 c2 c3
NA 1  4
5  2  9
3  1  8
NA 7  2
NA 9  1

请问你能帮帮我吗?非常感谢。

标签: r

解决方案


你可以这样做:


df[df$c1 == df$c2, 1] <- NA

 c1 c2 c3
1 NA  1  4
2  5  2  9
3  3  1  8
4 NA  7  2
5 NA  9  1


推荐阅读