Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为基数R中的系数选择最大值_R - Fatal编程技术网

为基数R中的系数选择最大值

为基数R中的系数选择最大值,r,R,我试图找出钻石数据集中每一克拉系数水平的最高价格: diamonds[,'carat']<-factor(diamonds[,'carat']) df<-with(diamonds, tapply(diamonds$price, diamonds$carat, max)) 输出是仅包含两列的数据帧。我希望我的df包含数据集中的所有其他列。此外,我希望表保留列的名称。现在df中的两行是“行名称”和“x”。谢谢。如果需要在现有数据集中创建新列,可以尝试ave library(ggplo

我试图找出钻石数据集中每一克拉系数水平的最高价格:

diamonds[,'carat']<-factor(diamonds[,'carat'])
df<-with(diamonds, tapply(diamonds$price, diamonds$carat, max))
输出是仅包含两列的数据帧。我希望我的df包含数据集中的所有其他列。此外,我希望表保留列的名称。现在df中的两行是“行名称”和“x”。谢谢。

如果需要在现有数据集中创建新列,可以尝试ave

library(ggplot2)
data(diamonds)
diamonds$Max <- with(diamonds,ave(price, carat,FUN= max))

如果我们需要所有的max值而不是which.max,我们可以在上面的解决方案中使用Price==maxPrice。此外,基于ave的解决方案将是

如果需要在现有数据集中创建新列,可以尝试ave

library(ggplot2)
data(diamonds)
diamonds$Max <- with(diamonds,ave(price, carat,FUN= max))

如果我们需要所有的max值而不是which.max,我们可以在上面的解决方案中使用Price==maxPrice。此外,基于ave的解决方案将是


钻石数据集约有10列,包括克拉、切割、颜色、清晰度等。。我希望保留与已选择的克拉价格相对应的所有其他列值。就我而言,如果克拉级别的价格有多个最大值,则选择哪一行无关紧要。是否需要每克拉价格有最大值的行?钻石数据集有大约10列克拉、切割、颜色、透明度等。。我希望保留与已选择的克拉价格相对应的所有其他列值。出于我的目的,如果克拉级别的价格有多个最大值,则选择哪一行并不重要。是否需要每克拉的价格有最大值的行。这是可行的,但我需要一个单独的数据框,这样我就可以框式绘制克拉级的最高价格。在我看来,这意味着每克拉只需要一个价格值。@Vasile您可以将dplyr/data.table中的结果分配给一个新对象。i、 e.净重%组别单位克拉%>%过滤价格==maxprice@acrun. 由于某些原因,我无法安装dplyr或data.table。所以我试着在R基地做这件事。我尝试了上一个解决方案,但我不确定它给了我什么输出。它有311次观测,一些克拉的水平正在重复。因为我有273个唯一克拉级别,所以我希望数据集具有所有原始列,其中273行由唯一克拉级别和最高价格选择,正如我所说的,如果有两个最高价格,我不在乎选择哪一个。@Vasile dplyr/data.table解决方案提供273个唯一行,但在ave中,它给出了311行,因为我们正在获取每个组的所有最大值。@arkun我现在明白了。有没有办法将ave输出进一步过滤到273个唯一行?谢谢。这是可行的,但我需要一个单独的数据框,这样我就可以框式绘制克拉级的最高价格。在我看来,这意味着每克拉只需要一个价格值。@Vasile您可以将dplyr/data.table中的结果分配给一个新对象。i、 e.净重%组别单位克拉%>%过滤价格==maxprice@acrun. 由于某些原因,我无法安装dplyr或data.table。所以我试着在R基地做这件事。我尝试了上一个解决方案,但我不确定它给了我什么输出。它有311次观测,一些克拉的水平正在重复。因为我有273个唯一克拉级别,所以我希望数据集具有所有原始列,其中273行由唯一克拉级别和最高价格选择,正如我所说的,如果有两个最高价格,我不在乎选择哪一个。@Vasile dplyr/data.table解决方案提供273个唯一行,但在ave中,它给出了311行,因为我们正在获取每个组的所有最大值。@arkun我现在明白了。是否有办法将ave输出进一步过滤到273个唯一行?
library(data.table)
res2 <- as.data.table(diamonds)[,.SD[which.max(price)] , carat]
library(sqldf)
nm1 <- setdiff(names(diamonds), 'price')
nm1[6] <- paste0("[",(nm1[6]),"]")
res3 <- sqldf(sprintf('select %s,
                       max(price) as price
                       from diamonds
                       group by carat',
                       toString(nm1)))
res4 <- do.call(rbind,lapply(split(diamonds, diamonds$carat), 
                  function(x) x[which.max(x$price),]))
res5 <- diamonds[with(diamonds, ave(price, carat, FUN=max)==price),]