[英]map column of one data frame with another data frame column in R (map a child element which is created from parent)
[英]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中進行編程。
我有四個數據幀,其數據幀名稱分別為Data1
, Data2
, Data3
, Data4
。 每個數據幀有八列( V1
, V2
, V3
, V4
, V5
, V6
, V7
, V8
)和10,000行。所有數據幀的行數和列數相同。
我想將所有四個數據幀的每一行的第8列( V8
)的元素與它們對應的行相互比較,以找到最大值和最小值。 例如,如果每個數據幀中有10行8列,則必須比較Data1
, Data2
, Data3
和Data4
的第1行第8列元素,以找到最大值和最小值。 然后,我必須比較Data1
, Data2
, Data3
, Data4
的第二行第八列元素,以找到最大值和最小值。 類似地,第三行第八列元素,第四行第八列元素和我必須為剩余的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.