首页 > 解决方案 > R:按行替换值

问题描述

我有一个看起来像这样的数据框:

ID1     | ID2 
I105    | I105
I122    | I122
**I107  | I108**
I118    | I118
**I139  | I140**

现在我想用 [3,1] 中的“I107”替换 [3,2] 中的“I108”

与第 5 行中的值相同。

实际列表要长一些,所以我必须找到一种自动执行此操作的方法。

有人有想法吗?

标签: r

解决方案


我们可以使用索引将“ID2”的值替换为“ID1”中的相应值

i1 <- c(3, 5)
df1 <- type.convert(df1, as.is = TRUE) # // in case if there are factor columns
# or if it is based on difference
i1 <- with(df1, ID2 != ID1)
df1$ID2[i1] <- df1$ID1[i1]

-输出

df1
#.  ID1  ID2
#1 I105 I105
#2 I122 I122
#3 I108 I108
#4 I118 I118
#5 I140 I140

如果我们想创建 ID1 的副本,只需执行分配即可。不需要任何条件

df1$ID2 <- df1$ID1

推荐阅读