鉴于此数据集:
Name Height Weight
1 Mary 65 110
2 John 70 200
3 Jane 64 115
Run Code Online (Sandbox Code Playgroud)
我想总结每个限定词列(高度和重量)
199 425
Run Code Online (Sandbox Code Playgroud)
问题是限定符可能不仅仅是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))
Run Code Online (Sandbox Code Playgroud)
但是当资格赛增加时,它会变得太长.什么是紧凑的方式来做到这一点?
Did*_*rts 64
您可以使用函数colSums()计算所有值的总和. [,-1]确保排除包含人名的第一列.
colSums(people[,-1])
Height Weight
199 425
Run Code Online (Sandbox Code Playgroud)
假设可能有多个不是数字的列,或者您的列顺序未修复,则更通用的方法是:
colSums(Filter(is.numeric, people))
Run Code Online (Sandbox Code Playgroud)
我们可以dplyr用来仅选择数字列并purr获取sum所有列。(可用于获取所有列的平均值,例如均值,最小值,最大值等。)
library("dplyr")
library("purrr")
people %>%
select_if(is.numeric) %>%
map_dbl(sum)
Run Code Online (Sandbox Code Playgroud)
或仅使用另一种简单方法 dplyr
library("dplyr")
people %>%
summarize_if(is.numeric, sum, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)