如何连接单个值中的行的百分比?

时间:2017-09-07 14:13:48

标签: r dataframe concatenation row percentage

我想在单行中连接该值的百分比。我想说:

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

我该怎么做?

1 个答案:

答案 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]