2013-10-22 37 views
0

我是编程新手,显然是R新手。我正在学习R中的一些文档并开始编程在R.比较数据帧中的列中的元素与另一个数据帧中的相同列中的另一元素中的相应行中的R

我有数据帧的名称Data1Data2Data3Data4四个数据帧。每个数据帧具有八个列(V1V2V3V4V5V6V7V8)和行和列的数目是相同的所有数据帧的万rows.The数。

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

+1

欢迎来到堆栈溢出!请检查此[链接](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。一个好的可重复的例子将帮助其他人更容易地解决你的问题。 –

回答

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

您可以将您的列结合到新的数据框中。然后,它很容易找到在行的最低或最高值:

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