我有以下数据集:我在r中执行以下操作:
Monday Tuesday Wednesday Friday Saturday Total
2 3 4 5 6 20
3 6 7 5 1 22
Run Code Online (Sandbox Code Playgroud)
我需要分为2/20,3/2,4/20,5/20,6/20和第二行,3/22,6/22,7/22,5/22,1/22.我可以通过提取列来实现这一点,但这很长很乏味,请一定要有一个更简单的方法
你可以干脆做
df[,1:5] / df[,6]
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以使用dlyr对多列进行行操作:
library(tidyverse)
library(margrittr)
df <- data.frame(
Monday=c(2,3),
Tuesday=c(3,6),
Wednesday=c(4,7),
Friday=c(5,5),
Saturday=c(6,1),
Total=c(20,22))
df %>%
mutate(
across(c(1:5),
.fns = ~./Total))
Run Code Online (Sandbox Code Playgroud)
然后返回:
Monday Tuesday Wednesday Friday Saturday Total
1 0.1000000 0.1500000 0.2000000 0.2500000 0.30000000 20
2 0.1363636 0.2727273 0.3181818 0.2272727 0.04545455 22
Run Code Online (Sandbox Code Playgroud)