如何计算指定行的值的平均值并按R排序?

如何计算指定行的值的平均值并按R排序?,r,sorting,mean,R,Sorting,Mean,我有一组数据,如t(USArrests): 我只想计算每个州的谋杀和袭击的平均值,并根据平均值将各州从高到低排序 我是新手,不知道该怎么做。有人能帮我吗?谢谢 如果您希望将谋杀和袭击的平均值结合在一起(假设情况如此,因为每个州只有一个OB),您可以: sort(colMeans(df[c("Murder","Assault"),]), decreasing = T) 或者,如果您的数据确实未转换,请改用rowMeans: sort(rowMeans(USArrests[,c("Murder"

我有一组数据,如
t(USArrests)

我只想计算每个州的
谋杀
袭击
的平均值,并根据平均值将各州从高到低排序


我是新手,不知道该怎么做。有人能帮我吗?谢谢

如果您希望将
谋杀
袭击
的平均值结合在一起(假设情况如此,因为每个州只有一个OB),您可以:

sort(colMeans(df[c("Murder","Assault"),]), decreasing = T)

或者,如果您的数据确实未转换,请改用
rowMeans

sort(rowMeans(USArrests[,c("Murder","Assault")]), decreasing = T)

dplyr
是很好的解决方案。不需要
t()
数据

library(dplyr)
library(tibble)
USArrests %>%
  rownames_to_column(var = "State") %>% 
  # perform operations by row
  rowwise() %>% 
  # add a column with the mean
  mutate(Mean = mean(c(Murder, Assault))) %>% 
  # should ungroup after using rowwise()
  ungroup() %>% 
  # sort by Mean descending
  arrange(desc(Mean))

考虑使用数据。表包:

library(data.table)
DT <- data.table(cbind(USArrests), State = row.names(USArrests))
mean_stats <- DT[, list(mean_murder = mean(Murder), 
                        mean_assault = mean(Assault)), by = State]
mean_stats[order(-mean_murder, -mean_assault)]
如果您是R新手,请帮自己一个忙,使用data.table包。一般来说,它的合并和聚合速度很快,语法简洁易懂。

所以你想要
的意思(谋杀、袭击)
library(data.table)
DT <- data.table(cbind(USArrests), State = row.names(USArrests))
mean_stats <- DT[, list(mean_murder = mean(Murder), 
                        mean_assault = mean(Assault)), by = State]
mean_stats[order(-mean_murder, -mean_assault)]
> head(mean_stats[order(-mean_murder, -mean_assault)])
            State mean_murder mean_assault
1:        Georgia        17.4          211
2:    Mississippi        16.1          259
3:        Florida        15.4          335
4:      Louisiana        15.4          249
5: South Carolina        14.4          279
6:        Alabama        13.2          236