gpt4 book ai didi

R 使用 n() 一次对多列求和

转载 作者:行者123 更新时间:2023-12-02 01:31:09 25 4
gpt4 key购买 nike

我不知道我是否在这里遗漏了一些非常明显的东西,但我无法获得所需的计数结果格式。这些都是对问题的"is"、“否”或“不适用”的回答。

我的数据看起来有点像:

df <- read.table(text = " A  B  C
0 NA 1
1 0 NA
0 1 0
NA NA 1
0 0 1
1 0 NA
0 1 NA ", header = TRUE)

df %>%
group_by(A, B, C)%>%
summarise(count = n())

我也尝试过

count(A, B, C)

结果完全相同。

我想计算每列的 0、1 和 NA 响应总数:(行和列在这里可以互换,它是我后面的表的响应 v 列格式的计数。)

Response 0 1 NA
Column A 4 2 1
Column B 3 2 2
Column C 1 3 3

我得到的是

A  B  C  n
0 0 1 1
0 1 0 1
0 1 NA 1
0 NA 1 1
1 0 NA 2
NA NA 1 1

换句话说,它正在计算 ABC 的每个唯一组合出现的次数。如何让它专注于计算列而不是行?

最佳答案

您可以跨列应用 table() 函数:

df <- read.table(text = " A  B  C
0 NA 1
1 0 NA
0 1 0
NA NA 1
0 0 1
1 0 NA
0 1 NA ", header = TRUE)


t(apply(df, 2,table, useNA = "always"))
#> 0 1 <NA>
#> A 4 2 1
#> B 3 2 2
#> C 1 3 3

reprex package 于 2022 年 8 月 5 日创建(v2.0.1)

另一种 tidyverse 解决方案如下:

library(tidyverse)

df <- read.table(text = " A B C
0 NA 1
1 0 NA
0 1 0
NA NA 1
0 0 1
1 0 NA
0 1 NA ", header = TRUE)


x <- df %>%
mutate(across(everything(), ~fct_explicit_na(as.factor(.x),"NA"))) %>%
map(., ~c(table(.x))) %>%
bind_rows(.id = 'Response')

x
#> # A tibble: 3 × 4
#> Response `0` `1` `NA`
#> <chr> <int> <int> <int>
#> 1 A 4 2 1
#> 2 B 3 2 2
#> 3 C 1 3 3

reprex package 于 2022 年 8 月 5 日创建(v2.0.1)

关于R 使用 n() 一次对多列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73250995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com