簡體   English   中英

比較數據框中某列中的元素與另一數據框中同一列中的另一個元素以獲取R中的對應行

[英]comparing an element in a column in a data frame with another element in the same column in another data frame for corresponding rows in R

我是編程的新手,顯然是R的新手。我正在R中學習一些文檔,並開始在R中進行編程。

我有四個數據幀,其數據幀名稱分別為Data1Data2Data3Data4 每個數據幀有八列( V1V2V3V4V5V6V7V8 )和10,000行。所有數據幀的行數和列數相同。

我想將所有四個數據幀的每一行的第8列( V8 )的元素與它們對應的行相互比較,以找到最大值和最小值。 例如,如果每個數據幀中有10行8列,則必須比較Data1Data2Data3Data4的第1行第8列元素,以找到最大值和最小值。 然后,我必須比較Data1Data2Data3Data4的第二行第八列元素,以找到最大值和最小值。 類似地,第三行第八列元素,第四行第八列元素和我必須為剩余的10,000行執行此操作。 我應該怎么做以及應該使用什么功能?

樣本數據:

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"))

您可以將列合並到一個新的數據框中。 然后很容易找到按行的最小值或最大值:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM