我是编程的新手,显然是R的新手。我正在学习R中的一些文档,并开始在R编程。
我有四个数据框,其数据框名称为Data1
,Data2
,Data3
,Data4
。每个数据框都有八列(V1
,V2
,V3
,V4
,V5
,V6
,V7
,{ {1}})和10,000行。所有数据帧的行数和列数相同。
我想比较所有四个数据帧的每一行的第8列(V8
)的元素与相应的行,并找到最大值和最小值。例如,如果我在每个数据框中有10行和8列,我必须比较V8
,Data1
,Data2
,Data3
的第1行第8列元素找到最大值和最小值。然后我必须比较Data4
,Data1
,Data2
,Data3
的第2行第8列元素,以查找最大值和最小值。类似于第3行第8列元素,第4行第8列元素,我必须为剩余的10,000行执行此操作。我应该怎么做以及我应该使用什么功能?
答案 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)