标签: summarize

在大型数据框中按行计算字符串的出现次数

我试图在一个大数据框中按行计算二进制字符结果:

V1      V2      V3      V4      V5  
Loss    Loss    Loss    Loss    Loss
Loss    Loss    Win     Win     Loss
Loss    Loss    Loss    Loss    Loss
Run Code Online (Sandbox Code Playgroud)

我需要知道的是按行输赢的频率.这只是一个简短的例子(大型模拟输出的片段),但对于第1行,在五次模拟中,我有五次损失,第二行三次丢失,两次获胜等.

我希望生成一个单独的表来显示按行获胜/失败的频率,或者,如果这不起作用,则添加两个新列:一个为每行提供"Win"和"Loss"的数量.

每一行都是不同的情况,每一列都是该案例的复制品.这显示为具有两个级别"损失""赢"的因素的数据框.

r count rowsum summarize

3
推荐指数
1
解决办法
1620
查看次数

tidyverse:汇总时计算特定级别的数量

我想在分组后汇总时,计算另一个因素的特定级别的数量。

在下面的工作示例中,我想计算"male"每个组中的级别数。我已经尝试了很多计数、计数等方法,但找不到一种简单明了的方法来做到这一点。

df <- data.frame(Group=replicate(20, sample(c("A","B"), 1)),
                 Value=rnorm(20),
                 Factor=replicate(20, sample(c("male","female"), 1)))
df %>% 
  group_by(Group) %>% 
  summarize(Value = mean(Value),
            n_male = ???)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

group-by r dplyr summarize tidyverse

3
推荐指数
1
解决办法
3019
查看次数

Summarise_each为第一个非NA值

有没有办法指示dplyr使用summarise_each规范firstna.rm=TRUE

我有一个包含许多NA和数值的数据帧.A列是患者ID.我想根据患者ID通过取每个变量的第一个非NA来总结数据帧.这没用

`summarised_df <- df %>% group_by(patient_ID) %>%
  summarise_each(funs(first(., na.rm=TRUE)))`
Run Code Online (Sandbox Code Playgroud)

提前致谢!

在这里,您可以找到数据的示例.但是,原始数据包括数百个不同的变量.

r dplyr summarize

3
推荐指数
1
解决办法
512
查看次数

使用 dplyr 计算分组平均值和逻辑值之间的差异

有谁知道如何使用 dplyr 来计算 和 的平均值之间的差异,some_var == TRUE并按some_var == FALSE第三个变量分组?

例如,给出以下示例数据框:

library('dplyr')

dat <- iris %>% 
     mutate(wide=Sepal.Width > 3) %>% 
     group_by(Species, wide) %>% 
     summarize(mean_width=mean(Sepal.Width))

dat

# A tibble: 6 x 3
# Groups:   Species [?]
     Species  wide mean_width
      <fctr> <lgl>      <dbl>
1     setosa FALSE   2.900000
2     setosa  TRUE   3.528571
3 versicolor FALSE   2.688095
4 versicolor  TRUE   3.200000
5  virginica FALSE   2.800000
6  virginica  TRUE   3.311765
Run Code Online (Sandbox Code Playgroud)

有谁知道一种方法来派生一个新的数据框,其差异为wide == TRUEwide == FALSE,按物种?

这可以使用几个语句来完成:

false_vals <- …
Run Code Online (Sandbox Code Playgroud)

r dplyr summarize

3
推荐指数
1
解决办法
1999
查看次数

如何使用带有动态列名的 dplyr 中的“摘要”?

我正在使用summarizeR 中 dplyr 包中的函数从表中总结组均值。我想使用存储在另一个变量中的列名字符串动态执行此操作。

以下是“正常”方式,当然可以工作:

myTibble <- group_by( iris, Species)
summarise( myTibble, avg = mean( Sepal.Length))

# A tibble: 3 x 2
  Species     avg
  <fct>      <dbl>
1 setosa      5.01
2 versicolor  5.94
3 virginica   6.59

Run Code Online (Sandbox Code Playgroud)

但是,我想做这样的事情:

myTibble <- group_by( iris, Species)
colOfInterest <- "Sepal.Length"
summarise( myTibble, avg = mean( colOfInterest))
Run Code Online (Sandbox Code Playgroud)

我读过与dplyr编程页,我已经尝试了一堆的组合quoenquo!!.dots=(...),等,但我还没有想出这样做还以正确的方式。

我也知道这个答案,但是,1) 当我使用标准评估函数时standardise_,R 告诉我它已经贬值了,2) 这个答案看起来一点也不优雅。那么,有没有一种好的,简单的方法来做到这一点?

谢谢!

r dplyr summarize

3
推荐指数
1
解决办法
290
查看次数

Dplyr:仅当行值 &gt; 0 时才使用汇总跨来取列的平均值

我有一个基因表达分数的数据框(细胞x基因)。我还将每个单元格所属的簇存储为一列。

我想计算一组基因(列)的每个簇的平均表达值,但是,我只想在这些计算中包含 > 0 的值。

我对此的尝试如下:

test <- gene_scores_df2 %>% 
  select(all_of(gene_list), Clusters) %>%
  group_by(Clusters) %>%
  summarize(across(c(1:13), ~mean(. > 0)))
Run Code Online (Sandbox Code Playgroud)

这会产生以下小标题:

# A tibble: 16 x 14
   Clusters SLC17A7  GAD1  GAD2 SLC32A1  GLI3   TNC PROX1  SCGN   LHX6 NXPH1 MEIS2 ZFHX3     C3
   <chr>      <dbl> <dbl> <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl>
 1 C1         0.611 0.605 0.817   0.850 0.979 0.590 0.725 0.434 0.275  0.728 0.949 0.886 0.332 
 2 C10        0.484 0.401 0.434   0.401 0.791 0.387 0.431 0.362 0.204 …
Run Code Online (Sandbox Code Playgroud)

r mean dplyr summarize across

3
推荐指数
1
解决办法
684
查看次数

汇总表中各列的字符值比例

在这种数据框中:

df <- data.frame(
     w1 = c("A","A","B","C","A"),
     w2 = c("C","A","A","C","C"),
     w3 = c("C","A","B","C","B")
   ) 
Run Code Online (Sandbox Code Playgroud)

我需要计算所有列中字符值的列内比例。有趣的是,以下代码适用于大型实际数据集,但对上述玩具数据会引发错误:

df %>%
  summarise(across(everything(), ~prop.table(table(.))*100))
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一个数据框,其中每列中所有值的精确比例加上一列指示值:

       w1  w2  w3
1  A   60  40  20
2  B   20   0  40
3  C   20  60  40
Run Code Online (Sandbox Code Playgroud)

r dataframe dplyr summarize

3
推荐指数
1
解决办法
85
查看次数

总结使用 dplyr 和 for 循环

我想使用dplyrfor 循环来总结每个自变量(列)和目标变量。这是我的主要数据框:

  Contract_ID Asurion Variable_1 Variable_2 Variable_3
         1 年 acf
         2 年平均
         3N BCG
         4 N adf
         5 年 bcf
         6 Y adf

分组后我得到

a1 <- a %>% 
  group_by(Asurion,BhvrBnk_Donates_to_Env_Causes) %>%       
  summarise(counT=n_distinct(CONTRACT_ID)) %>%                                        
  mutate(perc=paste0(round(counT/sum(counT)*100,2),"%"))

 Asurion Variable_1 CounT   perc
    Y         a        3     75%
    Y         b        1     25%
    N         a        1     50%
    N         b        1     50%
Run Code Online (Sandbox Code Playgroud)

我希望对数据框中存在的每个变量进行汇总,并且我想使用 for 循环来完成此操作。我怎样才能达到我想要的结果

这是我尝试使用的,但似乎不起作用。这是一个学校项目,我需要为此使用 for 循环。请在这里帮助我

categorical <- colnames(a)###where categroical is the names of all columns in a  
###I would like to have a for …
Run Code Online (Sandbox Code Playgroud)

for-loop group-by r dplyr summarize

2
推荐指数
1
解决办法
4035
查看次数

在 dplyr 中使用 group_by() 和 summarise() 时,sd 函数返回 NA(df 中没有 NA 值)

我有一个带有二进制数字响应变量(0 或 1)和几个响应变量的 df 。我正在尝试创建一个按类型(3 级变量)和步骤(7 级)分组的表。我想要每个步骤中每种类型的平均响应和标准差。输出表应有 21 行,其中有 4 个变量:类型、步长、平均值和标准差。

我的代码如下所示:

data <- data %>% group_by(step, type) %>% summarise(Response = mean(Response), dev = sd(Response))  
Run Code Online (Sandbox Code Playgroud)

输出表正确生成平均值,但对所有 sd 值返回 NA。我尝试使用 'na.rm=TRUE' 删除 NA 值,但原始 df 中没有任何响应。有任何想法吗?

group-by r dplyr summarize

2
推荐指数
1
解决办法
3881
查看次数

分组汇总仍然给出每个单独行的结果

我有以下数据:

\n
library(tidyverse)\n\ndf <- data.frame(id = c(1,1,1,2,2,2),\n                 x = rep(letters[1:2], each = 3),\n                 y = c(3,4,3,5,6,5),\n                 z = c(7,8,9,10,11,12))\n
Run Code Online (Sandbox Code Playgroud)\n

id我现在想通过一种获得z依赖值总和的方式来总结数据y。条件y本身取决于 的值x

\n

我以为我可以使用下面的代码,但这给了我所有输入 id 并且没有\xe2\x80\x98t 总结。结果是正确的,但我仍然希望每个 id 一行。

\n
df %>%\n  group_by(id) %>%\n  summarize(test = case_when(x == 'a' ~ sum(z[y == 3]),\n                             x == 'b' ~ sum(z[y == 5])))\n\n# A tibble: 6 x 2\n# Groups:   id [2]\n     id  test\n  <dbl> <dbl>\n1     1    16\n2     1    16\n3     1    16\n4     2    22\n5     2 …
Run Code Online (Sandbox Code Playgroud)

r summarize tidyverse

2
推荐指数
1
解决办法
48
查看次数

标签 统计

r ×10

summarize ×10

dplyr ×8

group-by ×3

tidyverse ×2

across ×1

count ×1

dataframe ×1

for-loop ×1

mean ×1

rowsum ×1