我想在单行中连接该值的百分比。我想说:
dat<-data.frame(x1=c(1), x2=c(4), x3=c(5), stringsAsFactors = FALSE)
我想在dat$concat
列中有一个连接值,如下所示:[10,40,50](每个值都是现在的百分比)
我以前问过我如何连接,命令运行得很好:
dat$conc <- paste0("[",apply(dat,1,paste,collapse=","),"]")
我该怎么做?
答案 0 :(得分:1)
如果我们假设5代表50%,那么就像用dat * .1替换dat一样简单,像这样:
dat <- data.frame(x1=c(1), x2=c(4), x3=c(5), stringsAsFactors = FALSE)
dat$conc <- paste0("[",apply(dat*.1,1,paste,collapse=","),"]")
x1 x2 x3 conc
1 1 4 5 [0.1,0.4,0.5]
但是我想注意,如果5表示5%而不是50%,那么你会想用dat / 100替换dat,如下所示:
dat <- data.frame(x1=c(1), x2=c(4), x3=c(5), stringsAsFactors = FALSE)
dat$conc <- paste0("[",apply(dat/100,1,paste,collapse=","),"]")
x1 x2 x3 conc
1 1 4 5 [0.01,0.04,0.05]
修改强>
要获取每个值相对于其行的百分比(即value / rowSums(x)),请尝试以下操作:
dat <- data.frame(x1=c(7),x2=c(4),x3=c(5),stringsAsFactors=FALSE)
dat$conc <- paste0("[",apply(dat/rowSums(dat),1,paste,collapse=","),"]")
输出:
x1 x2 x3 conc
1 7 4 5 [0.4375,0.25,0.3125]