【发布时间】:2018-02-21 15:53:25
【问题描述】:
我正在尝试合并两个数据框(大小相同)并创建新的数据框,该数据框在同一列和同一行中包含较少数量的两个值。
例如,两个数据框是:
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
换句话说,比较两个数据帧中的每个值并选择较小的数字。
【问题讨论】:
标签: 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
换句话说,比较两个数据帧中的每个值并选择较小的数字。
【问题讨论】:
标签: r dataframe replace merge min
我们可以使用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))
【讨论】: