如果我问这个问题是否已经被问过,我很抱歉,但我找不到它..
AGE<-c(25, 37, 57, 72, 48, 28, 31, 57, 43, 38)
LLS<-c(24, 1, 24, 24, 14, 21, 4, 12, 8, 1)
RLS<-c(11, 1, 14, 21, 7, 21, 22, 8, 27, 12)
dat <- data.frame(AGE, LLS, RLS)
并希望为每行获取列LLS
和RLS
的最大值。
请告诉我怎么做? 感谢。
答案 0 :(得分:2)
您可以尝试pmax
do.call(pmax, dat[-1])
#[1] 24 1 24 24 14 21 22 12 27 12
如果这是针对每对列的,则可以使用combn
res <- combn(names(dat),2, FUN=function(x) do.call(pmax,dat[x]))
colnames(res) <- apply(combn(names(dat),2),2, paste, collapse="_")
答案 1 :(得分:2)
我相信对于每一行,您希望返回单个值,以RLS或LLS中较高者为准。对?
如果是这样,Akrun的答案是好的。或者,您可以在matrixStats包中使用方便的rowMaxs()函数。在我看来,它更直接一点,但这是唯一真正的优势。 这是代码,你可以组合成更少的步骤,但我写出来以明确发生了什么。
AGE<-c(25, 37, 57, 72, 48, 28, 31, 57, 43, 38)
LLS<-c(24, 1, 24, 24, 14, 21, 4, 12, 8, 1)
RLS<-c(11, 1, 14, 21, 7, 21, 22, 8, 27, 12)
dat <- data.frame(AGE, LLS, RLS)
创建数据框的子集,仅包括您想要的列
dat2 <- dat[,2:3]
将新数据框转换为矩阵,以便rowMaxs()不会抱怨
dat3 <- as.matrix(dat2)
加载matrixStats包并调用rowMaxs()
library(matrixStats)
rowMaxs(dat3)
[1] 24 1 24 24 14 21 22 12 27 12