合并两个数据框并使用较小的值创建新的

时间:2017-09-13 04:45:11

标签: r dataframe replace merge min

我正在尝试合并两个数据框(相同大小)并创建新数据框,其中包含相同列和行中较小数量的两个值。
例如,两个数据帧是:

DF1

1 2 3
2 2 5
5 3 2

df 2

2 1 2
4 4 2
3 2 4

所需的输出是

1 1 2
2 2 2
3 2 2

换句话说,比较两个数据帧中的每个值并选择较小的数字。

1 个答案:

答案 0 :(得分:3)

我们可以使用pmin获取每个相应元素的min

pmin(df1, df2)
#   v1 v2 v3
#1  1  1  2
#2  2  2  2
#3  3  2  2

如果有多个数据集,请将其放在list并应用pmin

do.call(pmin, list(df1, df2))
#   v1 v2 v3
#1  1  1  2
#2  2  2  2
#3  3  2  2

数据

df1 <- structure(list(v1 = c(1L, 2L, 5L), v2 = c(2L, 2L, 3L), v3 = c(3L, 
 5L, 2L)), .Names = c("v1", "v2", "v3"), class = "data.frame", 
 row.names = c(NA, -3L))

df2 <- structure(list(v1 = c(2L, 4L, 3L), v2 = c(1L, 4L, 2L), v3 = c(2L, 
 2L, 4L)), .Names = c("v1", "v2", "v3"), class = "data.frame",
 row.names = c(NA, -3L))