r - 用 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
请问你能帮帮我吗?非常感谢。
解决方案
你可以这样做:
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
推荐阅读
- python - 用于二维数组的 Python Numpy Linspace 函数
- database - Laravel 在数据库上执行计划作业
- javascript - 基于值的jquery字体颜色脚本包含
- asp.net-mvc - 如何发布通过洋葱架构开发并拥有多个项目的 Web 应用程序
- java - CustomRepository 与 org.springframework.data.repository.CrudRepository 返回类型中的 save(S) 冲突
java.lang.Long 与 S 不兼容 - bash - 如何延迟BASH`>`的`重定向运算符`
- azure - Azure AD:使用客户端详细信息获取租户 ID
- c# - 如何从给定的语言名称中获取语言文化?
- apache - 从 url 中间获取变量并将其附加到最后
- html - 按钮闪烁