如果第二列与第一列匹配,如何使第二列为空?[复制]

How to make second column blank if it matches the first? [duplicate]

提问人:Antonio 提问时间:9/22/2023 最后编辑:M--Antonio 更新时间:9/22/2023 访问量:28

问:

新列 新列2
单元格 A 单元格 A
单元格 3 单元格 4
单元格 X 单元格 X

如何使这个顶级示例变成:

新列 新列2
单元格 A
单元格 3 单元格 4
单元格 X

另外,是否可以返回可以迭代的向量/列表?在你们的帮助下,我可能会很快填补空白。

例如

c(1,3)

我知道这是行不通的,因为代码本质上是问“整个列是否匹配?

我猜它需要一个 for 循环来回答这个问题。

ifelse(all(DATA$newcolumn == DATA$newcolumn2), DATA$newcolumn2 = " ", DATA$newcolumn)
r for 循环

评论

1赞 Jon Spring 9/22/2023
DATA$newcolumn2 = ifelse(DATA$newcolumn2 == DATA$newcolumn, NA, DATA$newcolumn2)?

答:

2赞 jay.sf 9/22/2023 #1

在 中使用。`==`Reduce

(df <- within(df, newcolumn2[Reduce(`==`, df)] <- NA))
#   newcolumn newcolumn2
# 1    Cell A       <NA>
# 2    Cell 3     Cell 4
# 3    Cell X       <NA>

数据

df <- structure(list(newcolumn = c("Cell A", "Cell 3", "Cell X"), newcolumn2 = c("Cell A", 
"Cell 4", "Cell X")), class = "data.frame", row.names = c(NA, 
-3L))