我想在整个行中串联该值的百分比。说我有:
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]