比较数据帧中列中的元素与R中相应行的另一个数据帧中同一列中的另一个元素

时间:2013-10-22 12:27:07

标签: r

我是编程的新手,显然是R的新手。我正在学习R中的一些文档,并开始在R编程。

我有四个数据框,其数据框名称为Data1Data2Data3Data4。每个数据框都有八列(V1V2V3V4V5V6V7,{ {1}})和10,000行。所有数据帧的行数和列数相同。

我想比较所有四个数据帧的每一行的第8列(V8)的元素与相应的行,并找到最大值和最小值。例如,如果我在每个数据框中有10行和8列,我必须比较V8Data1Data2Data3的第1行第8列元素找到最大值和最小值。然后我必须比较Data4Data1Data2Data3的第2行第8列元素,以查找最大值和最小值。类似于第3行第8列元素,第4行第8列元素,我必须为剩余的10,000行执行此操作。我应该怎么做以及我应该使用什么功能?

2 个答案:

答案 0 :(得分:2)

示例数据:

Data1 <- as.data.frame(matrix(runif(80), 10, 8))
Data2 <- as.data.frame(matrix(runif(80), 10, 8))
Data3 <- as.data.frame(matrix(runif(80), 10, 8))
Data4 <- as.data.frame(matrix(runif(80), 10, 8))

你可以这样做:

pmin(Data1$V8, Data2$V8, Data3$V8, Data4$V8)
pmax(Data1$V8, Data2$V8, Data3$V8, Data4$V8)

或者更具程序性的东西(这里可能有很多变化)

Datas <- mget(paste0("Data", 1:4))
do.call(pmin, lapply(Datas, `[[`, "V8"))
do.call(pmax, lapply(Datas, `[[`, "V8"))

答案 1 :(得分:1)

您可以在新数据框中合并列。然后很容易找到行的最小值或最大值:

newd <- data.frame(a=Data1$V8, b=Data2$V8, c=Data3$V8, d=Data4$V8)
apply(newd, 1, max)