当前位置: 首页 > 知识库问答 >
问题:

将新列更改为行最大值

强宾白
2023-03-14
 x <- head(iris)
> x
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

如果我想将一个名为“maximum_num”的新列突变到x上,其值为5.1,4.9,4.7等,我该怎么做?(我意识到糟糕的例子,因为这里都是Sepal.Length,但如果最大值每次来自不同的cols)

> which.max(x)
Error in which.max(x) : (list) object cannot be coerced to type 'double'

我想我可以用which.max但不知道如何编织。

我也试过

x %>% mutate(maxmax = summarise_all(select(., -Species), funs(max)))
Error in `[[<-.data.frame`(`*tmp*`, col, value = list(Sepal.Length = 5.4,  : 
  replacement has 1 row, data has 6

如何追加包含最大行值的新列?

有dplyr esque的方式吗?对base r也很满意。

共有2个答案

柴昆杰
2023-03-14

您可以在基础包中使用< code>apply:

x$maxma=apply(iris[-5],1,max)
江坚成
2023-03-14

我们可以使用矢量化的pmax

x$maxma <- do.call(pmax, iris[-5])

使用 dplyr

x %>% 
      mutate(maxma = do.call(pmax, .[-5]))
 类似资料:
  • 问题内容: Java标准库中的Priority Queue实现似乎是最小的Priority Queue,我感到有些困惑。为了将其变为最大,我创建了一个自定义比较器对象。 我想知道是否有更优雅的解决方案。从本质上讲,我不会使用可用于实现Dijkstras等的通用优先级队列。我什至没有意识到会有反向操作的队列:/ 问题答案: 使用Java的比较器。 Java参考

  • 我有这个数据框: 我需要把它变成这样: 我有点不知道该怎么做,请帮忙好吗?

  • 问题内容: 我的Mysql数据库中有一个表,该表用于身份验证。现在,我需要使身份验证区分大小写。在谷歌搜索中,我已经意识到Mysql列对于搜索操作是不区分大小写的(与Oracle相反),并且在创建表时可以通过指定“ binary”即更改默认行为。 有人可以告诉我如何更改Mysql中的表以将“二进制”添加到数据库的现有列吗? 谢谢! 问题答案:

  • 问题内容: 我想将表列更改为可为空。我用过了: 这会导致出现错误。正确的语法是什么? 问题答案: 假设(基于您之前的问题): 用您的实际数据类型替换。

  • 问题内容: 我试图在事实发生后修改表使其成为主键列。我尝试了以下SQL,但收到语法错误通知。 我做错什么了吗? 问题答案:

  • 问题内容: 在pgsql中,有一种方法可以建立一个包含多个值的表,然后选择其中一个值(例如other_id),找出其最大值,并使表中的每个新条目都从该值开始递增。 我想这太容易了,没有机会工作。 非常感谢您的见解! 问题答案: 快速浏览一下文档会告诉您 数据类型smallserial, serial 和bigserial 不是真实类型, 而只是创建唯一标识符列的符号方便 如果你想使现有的(整数)列