R中的汇总列总计[重复]
Posted
技术标签:
【中文标题】R中的汇总列总计[重复]【英文标题】:Aggregating column totals in R [duplicate] 【发布时间】:2021-10-03 11:26:26 【问题描述】:假设我有一个如下所示的数据框:
variable1 <- c(1,1,1,0,1,0)
variable2 <- c(0,0,0,1,1,0)
variable3 <- c(1,0,1,0,1,1)
df <- data.frame(variable1, variable2, variable3)
获得如下所示的数据帧输出的最简单方法是什么:
Variable Total
Variable1 4
Variable2 2
Variable3 3
colsums
有点像让我到达那里,但使用此方法不会将变量名称作为合法列输出。
【问题讨论】:
总结和调整。或者旋转然后总结。 【参考方案1】:library(dplyr)
library(tidyr)
df %>%
pivot_longer(everything()) %>%
group_by(name) %>%
summarise(Total = sum(value))
# A tibble: 3 × 2
name Total
<chr> <dbl>
1 variable1 4
2 variable2 2
3 variable3 4
【讨论】:
这是我尝试的第一个答案,它奏效了。谢谢!【参考方案2】:这可能是另一种选择:
df %>%
tibble::rownames_to_column(var = "id") %>%
janitor::adorn_totals()
id variable1 variable2 variable3
1 1 0 1
2 1 0 0
3 1 0 1
4 0 1 0
5 1 1 1
6 0 0 1
Total 4 2 4
【讨论】:
清洁工在日常使用中多次前来救援【参考方案3】:你可以试试这个。
variable1 <- c(1,1,1,0,1,0)
variable2 <- c(0,0,0,1,1,0)
variable3 <- c(1,0,1,0,1,1)
df <- data.frame(variable1, variable2, variable3)
> data.frame(Total= colSums(df))
Total
variable1 4
variable2 2
variable3 4
【讨论】:
【参考方案4】:## data frame
variable1 <- c(1,1,1,0,1,0)
variable2 <- c(0,0,0,1,1,0)
variable3 <- c(1,0,1,0,1,1)
df <- data.frame(variable1, variable2, variable3)
df
##using dplyr Library
library(dplyr)
new_df = df %>% summarise(across(variable1:variable3,sum)) # sum of ones in each column
t(new_df) # transpose new_df to get desired pattern
【讨论】:
欢迎 Sakshi 加入 SO!不鼓励一次又一次地为每个变量输入sum
。在这些情况下使用dplyr::across
。 :)
@AnilGoyal 感谢您提供信息。我已经进行了编辑。【参考方案5】:
使用stack/colSums
stack(colSums(df))[2:1]
ind values
1 variable1 4
2 variable2 2
3 variable3 4
【讨论】:
【参考方案6】:还有一种方法可以
library(tidyverse)
df %>%
summarise(across(everything(), sum)) %>%
pivot_longer(everything())
#> # A tibble: 3 x 2
#> name value
#> <chr> <dbl>
#> 1 variable1 4
#> 2 variable2 2
#> 3 variable3 4
由reprex package (v2.0.0) 于 2021 年 7 月 29 日创建
【讨论】:
以上是关于R中的汇总列总计[重复]的主要内容,如果未能解决你的问题,请参考以下文章