【问题标题】:Choose highest number in dataframe columns选择数据框列中的最大数字
【发布时间】:2015-04-29 20:17:35
【问题描述】:

我有一个包含 10 个数据框的列表,每个数据框有 6 列和 5553 行。

其中两列是数字。我想逐行比较这两列并选择最高的数字并放入第 7 列或作为向量。我尝试了不同的 ifelse 选项以及 if 语句,但似乎没有任何效果。

【问题讨论】:

  • 试试?pmax。此外,实际展示您尝试过的内容。

标签: r if-statement


【解决方案1】:

试试

indx <- sapply(df, is.numeric)
df$newcol <- do.call(pmax, df[indx])

如果有NA,可以使用na.rm=TRUE

df$newcol <- do.call(pmax, c(df[indx], na.rm=TRUE))

数据

df <- structure(list(V1 = c(8L, 7L, 2L, 3L, 8L, 1L, 10L, 3L, 5L, 2L, 
6L, 1L, 3L, 7L, 9L, 4L, 9L, 10L, 8L, 7L), V2 = c("m", "j", "h", 
"f", "b", "b", "k", "j", "g", "i", "m", "w", "m", "s", "o", "z", 
"l", "h", "e", "d"), V3 = c(6L, 2L, 6L, 3L, 4L, 4L, 3L, 9L, 4L, 
9L, 4L, 8L, 10L, 2L, 5L, 6L, 7L, 1L, 5L, 5L), V4 = c("m", "g", 
"h", "d", "s", "i", "y", "z", "t", "m", "d", "f", "a", "z", "q", 
"i", "o", "v", "a", "s"), V5 = c("h", "f", "s", "n", "r", "x", 
"h", "t", "u", "g", "p", "j", "r", "r", "i", "x", "f", "b", "n", 
"d"), V6 = c("c", "o", "s", "d", "f", "r", "b", "p", "q", "b", 
"i", "g", "j", "d", "y", "f", "s", "q", "s", "z")), .Names = c("V1", 
"V2", "V3", "V4", "V5", "V6"), row.names = c(NA, -20L), 
class = "data.frame")

【讨论】:

  • 非常感谢。我尝试了很长时间,但没有意识到有一个 pmax 函数。与我的(不起作用的)循环和 ifelses 相比,非常易于使用。
【解决方案2】:

这是我的解决方案,可能有点笨拙,但给你一个想法可能很有用。

# Create some data for reproducibility
da1 <- rnorm(10, mean = 5)
da2 <- rnorm(10, mean = 5)
data <- data.frame(da1, da2)

# Create a loop 
maxs <- data.frame()
for(i in 1:nrow(data)) {
        maxs <- rbind(maxs, max(data[i ,1 ], data[i, 2] ))
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-12
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2015-03-17
    • 1970-01-01
    相关资源
    最近更新 更多