R中
马克斯 - 如果Excel复制我试图复制的最大功能,如果从Excel中R.R中
ksu price max
9144037 3.11 3.11
8448749 4.19 5.24
9649391 0 8.39
8448749 4.19 5.24
8448749 4.19 5.24
8448749 4.19 5.24
8448749 4.19 5.24
9649391 8.39 8.39
8448749 5.24 5.24
9144037 1.99 3.11
9144037 1.99 3.11
如果我用Excel做我会用MAX(IF())。此代码应该查看每个ksu的最大价格,并返回最后一列的最大值。我试过这个:
max(price[ksu == ksu])
但它没有给我所需的输出。无论ksu如何,它只返回一个最大值。
假设你有一个叫df
data.frame你可以很容易地使用ave
函数来得到你想要的想。举个例子:
> df <- data.frame(grp = c('a','a','b','b'), vals = 1:4)
> df
grp vals
1 a 1
2 a 2
3 b 3
4 b 4
> # Returns a vector
> ave(df$vals, df$grp, FUN = max)
[1] 2 2 4 4
> # So we can store it back into the data.frame if we want
> df$max <- ave(df$vals, df$grp, FUN = max)
> df
grp vals max
1 a 1 2
2 a 2 2
3 b 3 4
4 b 4 4
因此,使用您的变量名(但仍假设data.frame是df
):HTTP://
df$max <- ave(df$price, df$ksu, FUN = max)
这工作。谢谢! – user1834217
另一个选择是'setDT(df)[,Max:= max(vals),grp]' – akrun
@akrun对。我正在寻找一个基础解决方案,但如果您愿意,您可以提交data.table解决方案。 – Dason
假设你的数据在一个名为data.frame
dat
,我们可以使用dplyr
包:
library(dplyr)
dat %>%
group_by(ksu) %>%
mutate(max = max(price))
ksu price max
<int> <dbl> <dbl>
1 9144037 3.11 3.11
2 8448749 4.19 5.24
3 9649391 0.00 8.39
...
以供将来参考,请在提交之前任何更多的问题,请阅读以下*.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Dason