用NA替换数据帧行中的第一个重复数据

时间:2019-06-17 12:01:48

标签: r

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

我的数据框'Data'具有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()循环来重新创建我的数据框,并且每次重新创建数据框时列的名称都会更改。
我想用NA替换c1列中与c2列相同行中重复的任何值,像这样

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

可以帮我吗?非常感谢。

2 个答案:

答案 0 :(得分:5)

您可以这样做:

sum

答案 1 :(得分:2)

使用dplyr

df %>% 
   mutate(c1=ifelse(c1==c2,NA,c1))
  c1 c2 c3
1 NA  1  4
2  5  2  9
3  3  1  8
4 NA  7  2
5 NA  9  1