如何划分和乘以R中的每一行/列(单元格)值?

时间:2018-01-09 20:19:18

标签: r

我有一个名为mydf的数据框。

mydf<- structure(list(length = 18:21, A = c(40889L, 42585L, 60586L, 
73374L), C = c(24283L, 66371L, 30027L, 40899L), G = c(38245L, 
29170L, 37877L, 49023L), T = c(92544L, 159373L, 326940L, 654364L
)), .Names = c("length", "A", "C", "G", "T"), row.names = c(NA, 
4L), class = "data.frame")

我想在mydf数据框中执行如下的数学函数。换句话说,我想将每个值除以一个数字(比如x)并乘以100.

 length     A            C            G             T
     18 (40889/x)*100 (24283/x)*100 (38245/x)*100   (92544/x)*100
     19 (42585/x)*100 (66371/x)*100 (29170/x)*100 (159373/x)*100
     20 (60586/x)*100 (30027/)*100 (37877/x)*100 (326940/x)*100
     21 (73374/x)*100 (40899/x)*100 (49023/x) (654364/x)*100

5 个答案:

答案 0 :(得分:0)

这样的事情可以胜任:

x = 5
cbind(length = mydf[,1], (mydf[,-1]/x)*100)

使用dplyr

library(dplyr)
mydf %>%
  mutate_at(vars(-1), funs(./x*100))

<强>结果:

  length       A       C      G        T
1     18  817780  485660 764900  1850880
2     19  851700 1327420 583400  3187460
3     20 1211720  600540 757540  6538800
4     21 1467480  817980 980460 13087280

答案 1 :(得分:0)

列A的

mydf$A <- ((mydf$A / x)*100)

你应该可以谷歌这个,因为它是基本的。

答案 2 :(得分:0)

x <- 4 
mydf <- cbind(mydf[1], ( mydf[2:ncol(mydf)] / x) * 100)

结果:

  length       A       C       G        T
1     18 1022225  607075  956125  2313600
2     19 1064625 1659275  729250  3984325
3     20 1514650  750675  946925  8173500
4     21 1834350 1022475 1225575 16359100

要应用于特定列:

specific_cols <- which(names(mydf) %in% c('A', 'G', 'T'))

specific_result <- cbind(mydf[-specific_cols], ( mydf[specific_cols] / x) * 100)

结果:

  length     C       A       G        T
1     18 24283 1022225  956125  2313600
2     19 66371 1064625  729250  3984325
3     20 30027 1514650  946925  8173500
4     21 40899 1834350 1225575 16359100

答案 3 :(得分:0)

dplyr解决方案

mydf %>%
  mutate_at(vars(c("A","C","G","T")),funs(.*x/100))

data.table解决方案

DT <- setDT(mydf)
DT[,.SD*x/100,.SDcols = c("A","C","G","T")]

和基地

mydf[c("A","C","G","T")] <- mydf[c("A","C","G","T")]*x/100

答案 4 :(得分:0)

mydf
length     A     C     G      T
1     18 40889 24283 38245  92544
2     19 42585 66371 29170 159373
3     20 60586 30027 37877 326940
4     21 73374 40899 49023 654364
x<-2
mydf[,-1]<-(mydf[-1]/x)*100
mydf
length       A       C       G        T
1     18 2044450 1214150 1912250  4627200
2     19 2129250 3318550 1458500  7968650
3     20 3029300 1501350 1893850 16347000
4     21 3668700 2044950 2451150 32718200