如何将数据帧的每个元素乘以 R 中每一行的元素总和?
How to multiply each element of a dataframe by sum of element in each row in R?
我有一个如下所示的数据框:
Name Place a b c sum
xyz mno 1 2 3 6
pqr jkl 4 6 1 11
我想要 R 脚本中的命令,它可以帮助我将 "a"、"b" 和 "c" 列中的数值除以相应 "sum" 列中的值
因此,我的输出如下:
Name Place a b c sum
xyz mno 1/6 2/6 3/6 6
pqr jkl 4/11 6/11 1/11 11
我们可以试试
df1[3:5] <- df1[3:5]/df1[6][row(df1[3:5])]
或者只是
df1[3:5] <- df1[3:5]/df1[,6]
df1
# Name Place a b c sum
#1 xyz mno 0.1666667 0.3333333 0.50000000 6
#2 pqr jkl 0.3636364 0.5454545 0.09090909 11
或使用dplyr
library(dplyr)
df1 %>%
mutate_each(funs(./df1$sum), a:c)
或者我们可以使用data.table
library(data.table)
setDT(df1)
nm1 <- letters[1:3]
for(j in nm1){
set(df1, i=NULL, j=j, value= df1[[j]]/df1$sum)
}
如果您想将它保留为分数,那么您可以尝试 MASS
包中的 fractions
函数
library(MASS)
fractions(unlist(df[, 3:5])/df[,6])
# a1 a2 b1 b2 c1 c2
# 1/6 4/11 1/3 6/11 1/2 1/11
然而,这会将 2/6
计算为 1/3
等等。
我有一个如下所示的数据框:
Name Place a b c sum
xyz mno 1 2 3 6
pqr jkl 4 6 1 11
我想要 R 脚本中的命令,它可以帮助我将 "a"、"b" 和 "c" 列中的数值除以相应 "sum" 列中的值
因此,我的输出如下:
Name Place a b c sum
xyz mno 1/6 2/6 3/6 6
pqr jkl 4/11 6/11 1/11 11
我们可以试试
df1[3:5] <- df1[3:5]/df1[6][row(df1[3:5])]
或者只是
df1[3:5] <- df1[3:5]/df1[,6]
df1
# Name Place a b c sum
#1 xyz mno 0.1666667 0.3333333 0.50000000 6
#2 pqr jkl 0.3636364 0.5454545 0.09090909 11
或使用dplyr
library(dplyr)
df1 %>%
mutate_each(funs(./df1$sum), a:c)
或者我们可以使用data.table
library(data.table)
setDT(df1)
nm1 <- letters[1:3]
for(j in nm1){
set(df1, i=NULL, j=j, value= df1[[j]]/df1$sum)
}
如果您想将它保留为分数,那么您可以尝试 MASS
包中的 fractions
函数
library(MASS)
fractions(unlist(df[, 3:5])/df[,6])
# a1 a2 b1 b2 c1 c2
# 1/6 4/11 1/3 6/11 1/2 1/11
然而,这会将 2/6
计算为 1/3
等等。