用NA替换dataframe行中的第一个重复数据
我发现数据框“Data”中的行的第一个元素通常等于第二个元素。我想用NA替换复制的第一个元素,并保留第二个元素 我的数据框“Data”有3列c1、c2和c3,如下所示用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]
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]
。非常感谢您快速有效的回答。祝你下午愉快!你可以接受这个答案,所以这个问题看起来已经解决了。很抱歉,我晚了才接受你的答案。这是我第一次使用这个网站,我不知道如何接受这个答案。非常感谢你。