0

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

我有四个数据框名称为Data1, Data2, Data3, Data4. 每个数据帧有 8 列(V1V2V3V4V5V6V7V8)和 10,000 行。所有数据帧的行数和列数相同。

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

4

2 回答 2

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"))
于 2013-10-22T12:48:13.557 回答
1

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

newd <- data.frame(a=Data1$V8, b=Data2$V8, c=Data3$V8, d=Data4$V8)
apply(newd, 1, max)
于 2013-10-22T12:38:19.310 回答