Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用NA替换dataframe行中的第一个重复数据_R - Fatal编程技术网

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

用NA替换dataframe行中的第一个重复数据,r,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 c1 c2 c3 NA 1 4 5 2 9 3 1 8 NA 7 2 NA 9 1 我试着运行这个代码 for (i in 1:length(Data)) { Data[i,1]<- if (Data[i,1]

我发现数据框“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
c1 c2 c3
NA 1  4
5  2  9
3  1  8
NA 7  2
NA 9  1
我试着运行这个代码

for (i in 1:length(Data)) {
Data[i,1]<- if (Data[i,1]==Data[i,2]) NA else Data[i,1]
}
你能帮帮我吗?非常感谢。

您可以这样做:


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



df[df$c1==df$c2,1]带
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

除了下面的答案,请记住,R很少需要基本事物的for循环。总是试着去想你如何把你要做的事情矢量化。真的非常感谢你。我是R的新手,我倾向于以一种比实际更复杂的方式来思考每件事。我正在努力弥补这个缺点。非常感谢。您能告诉我如何使用位置信息来引用元素,而不是df$c1列的特定名称吗?因为每次重新创建df时列的名称都会更改。您可以改为编写
df[,1]==df[,2]
。非常感谢您快速有效的回答。祝你下午愉快!你可以接受这个答案,所以这个问题看起来已经解决了。很抱歉,我晚了才接受你的答案。这是我第一次使用这个网站,我不知道如何接受这个答案。非常感谢你。