将单元格值与第一列相乘
Multiply cell values with first column
我有一个如下所示的数据框
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
显示百分比。是否有一个简单的解决方案,如何将百分比值与第一列中的相应值相乘以获得绝对数字?
我要查找的结果如下 table:
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
您可以使用 sapply
:
cbind(sample_data[,1:2],
sapply(sample_data[grepl("MO", names(sample_data))], function(x) x*sample_data$Cohort.Size/100))
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
我有一个如下所示的数据框
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
显示百分比。是否有一个简单的解决方案,如何将百分比值与第一列中的相应值相乘以获得绝对数字?
我要查找的结果如下 table:
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
您可以使用 sapply
:
cbind(sample_data[,1:2],
sapply(sample_data[grepl("MO", names(sample_data))], function(x) x*sample_data$Cohort.Size/100))
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