2013-10-22 62 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) 
相關問題