r - 用特定公式计算因子的频率
问题描述
我有这样的数据集:
df <- data.frame( ID = c("A","A","A","B","B","B","C","C","C"),
levels = c( "Y", "R", "O","Y", "R", "O","Y", "R", "O" ),
Counts=c(5,1,5,10,2,1,3,5,8))
ID levels Counts
A Y 5
A R 1
A O 5
B Y 10
B R 2
B O 1
C Y 3
C R 5
C O 8
我想创建另一个具有第二列(级别)百分比的列,如这个公式
freq=(Y+O/Y+O+R)*100
所以现在数据框应该是这样的:
ID freq
A 0.1
B 0.2
C 0.3
我尝试了几个解决方案,但都没有奏效,您能帮帮我吗?
解决方案
使用pivot_wider
df1 %>%
pivot_wider(id_cols = ID, values_from = Counts, names_from = levels) %>%
mutate(freq = (Y+O/Y+O+R)*100,
freq. = (Y+O)/(Y+O+R)*100) # %>% select(-Y, -R, -O)
ID Y R O freq freq.
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 A 5 1 5 1200 90.9
2 B 10 2 1 1310 84.6
3 C 3 5 8 1867. 68.8
我不确定你的公式想要什么。
推荐阅读
- kubernetes - 无法从 pod 内连接到代理 [对等连接重置]
- python-3.x - MinimalModbus 导入错误 => AttributeError:模块 'serial' 没有属性 'Serial'
- mongodb - MongoDB 聚合查询问题
- reactjs - 获得较早获取的结果的正确方法是什么
- express - swagger-ui-express persistAuthorization 不起作用
- reactjs - 使用 @testing-library/react 的默认值不会发生输入更改
- sql - Azure Synapse 管道:如何将增量更新从 SQL Server 移动到 Synapse 以处理数字
- node.js - Node Js在for循环中获取请求并在对象中收集响应
- c++ - IEEE 754 两个 32 位浮点数的加法(-1 和 2^(-50) )
- c# - C# Webclient 无法下载 api.github.com 页面