如何计算指定行的值的平均值并按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