我有一个名为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
答案 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)
:
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