r - 将单元格值与第一列相乘
问题描述
我有一个如下所示的数据框
sample_data <- data.frame(Cohort = c("Q1", "Q2", "Q3", "Q4"),
Cohort.Size = c(120, 234, 345, 222),
MO1 = c(8.3, 7.1, 2.4, 5.4),
MO2 = c(6.6, 3.2, 5.3, NA),
MO3 = c(2.3, 4.5, NA, NA),
MO4 = c(4.5, NA, NA, NA))
如您所见,第二列Cohort.Size
由绝对数字组成,而所有其余列均MO1, MO2, MO3, MO4
显示百分比。是否有一个简单的解决方案,如何将百分比值与第一列中的相应值相乘以获得绝对数字?
我正在寻找的结果将是下表:
Cohort | Cohort.Size | MO1 | MO2 | MO3 | MO4
Q1 | 120 | 9.96 | 7.92 | 2.76 | 5.4
Q2 | 234 | 16.6 | 7.49 | 10.53|
Q3 | 345 | 8.28 | 18.29| |
Q4 | 222 | 11.99| | |
谢谢!
解决方案
您可以直接在数据框上执行此计算。
cols <- grep('MO', names(sample_data))
sample_data[cols] <- sample_data$Cohort.Size * sample_data[cols]/100
sample_data
# Cohort Cohort.Size MO1 MO2 MO3 MO4
#1 Q1 120 9.960 7.920 2.76 5.4
#2 Q2 234 16.614 7.488 10.53 NA
#3 Q3 345 8.280 18.285 NA NA
#4 Q4 222 11.988 NA NA NA
推荐阅读
- java - 导入项目和 Gradle 不同步
- python - Django 表单不起作用或 CSRF_token 中止
- java - How to read data from SQLiteOpenHelper to textview?
- javascript - 按年份分组日期数组
- flutter - Flutter 将一个值与两个字符串进行比较
- wordpress - 如何为手机创建响应式页脚
- java - 在 gradle 中生成 Spring Boot 项目结构的标准工具
- javascript - 带有轨道 fitbounds 的传单 featureGroup 无效
- angularjs - CSS AngularJS 到 Vuetify
- python - pytorch 没有出现在 jupyter notebook 的内核中