对R中data.frame每列中的所有值求和
鉴于此数据集:对R中data.frame每列中的所有值求和,r,R,鉴于此数据集: Name Height Weight 1 Mary 65 110 2 John 70 200 3 Jane 64 115 我想把每一列(身高和体重)的限定词加起来 问题是限定符可能不止2个(即更多) 而不仅仅是身高和体重) 我能做到 # Create the dataframe people Name <- c("Mary", "John", "Jane") Height <- c(65,70,6
Name Height Weight
1 Mary 65 110
2 John 70 200
3 Jane 64 115
我想把每一列(身高和体重)的限定词加起来
问题是限定符可能不止2个(即更多)
而不仅仅是身高和体重)
我能做到
# Create the dataframe people
Name <- c("Mary", "John", "Jane")
Height <- c(65,70,64)
Weight <- c(110,200,115)
people <- data.frame(Name, Height, Weight)
res <- c(sum(people$Height),sum(people$Weight))
#创建数据帧
Name您可以使用函数colSums()
计算所有值的总和<代码>[,-1]
确保排除包含人名的第一列
colSums(people[,-1])
Height Weight
199 425
假设可能有多个非数字列,或者列顺序不固定,则更通用的方法是:
colSums(Filter(is.numeric, people))
为了完成:
apply(people[,-1], 2, function(x) sum(x))
#Height Weight
# 199 425
我们可以使用
dplyr
仅选择数字列,使用purr
为所有列获取sum
。(可用于获取所有列的值,如平均值、最小值、最大值等)
或者只使用dplyr
-从(dplyr 1.0.0)开始,我们可以使用cross()
您也可以尝试
a是的,这确实有效,但严格来说比colSums
更糟糕-效率更低,输入时间更长。
mapply(sum,people[,-1])
Height Weight
199 425
apply(people[,-1], 2, function(x) sum(x))
#Height Weight
# 199 425
library("dplyr")
library("purrr")
people %>%
select_if(is.numeric) %>%
map_dbl(sum)
library("dplyr")
people %>%
summarise(across(where(is.numeric), ~ sum(.x, na.rm = TRUE)))
library("dplyr")
people %>%
summarize_if(is.numeric, sum, na.rm=TRUE)
a <- apply(people[,c(2,3)], 2, sum )