r-如何将单个值的一行百分比连接在一起



我想在整个行中串联该值的百分比。说我有:

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=","),"]")

我该怎么做?

如果我们假设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]

编辑:

要获得相对于其行(即值/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]

最新更新