我使用带有两个因子的"GROUP_BY"对我的数据集进行了分组,并计算了每个结果组属于每个感兴趣类别的观测数量,如下所示.

df1 <- data.frame(x = c(a,a,b,a,b,c,a,c,a,b), y = c(0,1,0,1,1,0,1,0,0,0,0), var = c(inf, med, inf, sup, med, med, sup, inf, med, sup))

df1 %>% 
  group_by(x,y) %>% 
  count(var) -> conta_var

# A tibble: 9 × 4
# Groups:   x, y [5]
  x         y var       n
  <chr> <dbl> <chr> <int>
1 a         0 inf       1
2 a         0 med       1
3 a         1 med       1
4 a         1 sup       2
5 b         0 inf       1
6 b         0 sup       1
7 b         1 med       1
8 c         0 inf       1
9 c         0 med       1

现在我想添加一个名为like n_perc的新列,它取每个n并将其除以x-y每个组合的观测总数

我可以手动完成此操作,方法是首先对每个组进行过滤,计算每个n:

df1 %>% 
  filter(x == "a", y = 1) %>% 
  nrow() -> n_f

然后使用带有嵌套ifelse函数的mutate添加列,但我相信有一种更快的方法来完成它.

最终结果如下所示:

# A tibble: 9 × 4
# Groups:   x, y [5]
  x         y var       n   n_perc
  <chr> <dbl> <chr> <int>    <dbl>
1 a         0 inf       1      0.5
2 a         0 med       1      0.5
3 a         1 med       1      0.33
4 a         1 sup       2      0.66
5 b         0 inf       1   ...
6 b         0 sup       1
7 b         1 med       1
8 c         0 inf       1
9 c         0 med       1

推荐答案

以下是示例数据帧的更正版本的Repex.它会将值四舍五入为2dp,但请注意n_perc的第四个值四舍五入为.67,而不是示例输出中的.66:

library(dplyr)

# Your corrected dataframe
df1 <- data.frame(x = c("a","a","b","a","b","c","a","c","a","b"),
                  y = c(0,1,0,1,1,0,1,0,0,0),
                  var = c("inf", "med", "inf", "sup", "med",
                          "med", "sup", "inf", "med", "sup"))

conta_var <- df1 %>% 
  group_by(x, y) %>% 
  count(var) %>%
  mutate(n_perc = signif(n / sum(n), 2)) %>%
  ungroup()

conta_var
# A tibble: 9 × 5
  x         y var       n n_perc
  <chr> <dbl> <chr> <int>  <dbl>
1 a         0 inf       1   0.5 
2 a         0 med       1   0.5 
3 a         1 med       1   0.33
4 a         1 sup       2   0.67
5 b         0 inf       1   0.5 
6 b         0 sup       1   0.5 
7 b         1 med       1   1   
8 c         0 inf       1   0.5 
9 c         0 med       1   0.5

R相关问答推荐

根据R中两个变量的两个条件删除带有dspirr的行

将向量组合到一个数据集中,并相应地命名行

如何在编辑列时更新可编辑数据表,并使用该表在Shiny中执行连续计算

根据多个条件增加y轴高度以适应geom_text标签

Rplotly中的Sankey Diagram:意外连接&

在R中,如何将变量(A,B和C)拟合在同一列中,如A和B,以及A和C在同一面板中?

如何从像glm这样的模型中提取系数表的相关性?

使用带有OR条件的grepl过滤字符串

将Posict转换为数字时的负时间(以秒为单位)

如何在ggplot2中绘制具有特定 colored颜色 的连续色轮

过滤名称以特定字符串开头的文件

R中有约束的优化问题:如何用复数和对数效益函数解决问题?

根据另一列中的值和条件查找新列的值

手动指定从相同数据创建的叠加图的 colored颜色

如何删除设置大小的曲线图并添加条形图顶部数字的百分比

如何筛选截止年份之前最后一个测量年度的所有观测值以及截止年份之后所有年份的所有观测值

为什么不能使用lApply在包装函数中调用子集

使用函数从R中的列中删除标高

在REST API中使用参数R

从字符串01JAN2021创建日期