【发布时间】:2021-06-22 07:55:43
【问题描述】:
比较数据帧的最简单和最快的方法是什么。 输入:
df1 <- data.frame(ID = c(1, 2, 3, 4),
A = c(1, 2, 3, NA),
B = c(1, 2, NA, NA))
> df1
ID A B
1 1 1 1
2 2 2 2
3 3 3 NA
4 4 NA NA
df2 <- data.frame(ID = c(1, 2, 3, 4),
A = c(1, 2, 3, 4),
B = c(1, 2, 3, NA))
> df2
ID A B
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 NA
我假设数据框具有相同数量的行和列。 输出数据框应包含:
- 具有来自 df1 或 df2 的值的列 ID -(如果来自 df1 或 df2 则不适用,因为它们是相同的。
- 如果 df1 中的单元格内容与 df2 中的不同,则 A 列和 B 列中的值应为 df2 中的值,如果值相同,则应为 NA。
我可以为每一行和每一列使用和迭代,但这不是优雅的解决方案。 好点了吗?
我试过了:
result = apply(ifelse(df1[,] == df2[,], NA, df2[,])
但不起作用。
输出 df 应如下所示:
result <- data.frame(ID = c(1, 2, 3, 4),
A = c(NA, NA, NA, 4),
B = c(NA, NA, 3, NA))
> result
ID A B
1 1 NA NA
2 2 NA NA
3 3 NA 3
4 4 4 NA
【问题讨论】:
标签: r if-statement