R 如何计算数据集中每个答案的百分比,并在括号中显示百分比
我想知道如何计算数据集中每个答案的百分比,然后在括号中显示百分比。我可以编写什么代码来实现这一点 这是我正在使用的数据集R 如何计算数据集中每个答案的百分比,并在括号中显示百分比,r,R,我想知道如何计算数据集中每个答案的百分比,然后在括号中显示百分比。我可以编写什么代码来实现这一点 这是我正在使用的数据集 A B C D 50% 26.73194 5.5 21.50 9.150 5% 18.91642 1.6 4.55 7.645 95% 31.14233 21.3 56.30 10.570 我想计算数据集中所有数字的百分比,数字39938等于100% 然后,我想在每个数字旁边的括号中显示百分比 我想要实现的数据集如下
A B C D
50% 26.73194 5.5 21.50 9.150
5% 18.91642 1.6 4.55 7.645
95% 31.14233 21.3 56.30 10.570
我想计算数据集中所有数字的百分比,数字39938等于100%
然后,我想在每个数字旁边的括号中显示百分比
我想要实现的数据集如下所示:
A B C D
50% 26.73194(0.066) 5.5(0.014) 21.50(0.054) 9.150(0.002)
5% 18.91642(0.047) 1.6(0.004) 4.55(0.001) 7.645(0.017)
95% 31.14233(0.77) 21.3(0.054) 56.30(0.14) 10.570(0.025)
试试这个:
library(dplyr)
df %>%
mutate_all(~paste0(.x, '(', round(.x * 100 / sum(.x)), ')'))
从另一个用户的回答中,可以使用以下方法获得预期输出:
as.data.frame(purrr::map(df,function(x) paste0(x,"(",round(x/3,2),")")))
A B
1 1.63(0.54) 6(2)
2 20.5(6.83) 1(0.33)
3 18(6) 5(1.67)
4 26.7(8.9) 24(8)
最初的问题不清楚
原创
预期输出和逻辑路径尚不清楚。以下是一个尝试:
Vals<-colSums(df)#I actually think nrow(df) is better
Values<-as.vector(Vals)
as.data.frame(purrr::map2(df,Values,function(x,y) paste0(x,"(",round(x*100/y,2),")")))
这个问题没有说得很清楚,但我想你想要这个:
df1[] <- lapply(df1, function(x) {paste0(x,"(",round(x/3,2),")")})
除以三是因为根据OP,300的值应该对应于100%。1.63如何等于54%相关问题-NA如何等于20.50?如果你想得到好的答案,你应该对你的例子做一些质量检查。什么包包含mutate\u all,因为我在R
dplyr
中找不到它。当我尝试此操作时,我收到错误消息:error in UseMethod(“tbl_vars”):没有适用于“tbl_vars”的方法应用于类“c”(“矩阵”、“双精度”、“数值”)的对象。这不会产生与问题中所示相同的输出。OP应该更好地阐明他们实际想要做什么。@M.G使用as_tibble()函数将您的数据帧转换为tibble。我已经尝试过了,但没有得到预期的结果。我已经更改了我原来的帖子,我如何更改代码以获得我想要的结果
df1[] <- lapply(df1, function(x) {paste0(x,"(",round(x/3,2),")")})
> df1
A B
1 1.63(0.54) 6(2)
2 20.5(6.83) 1(0.33)
3 18(6) 5(1.67)
4 26.7(8.9) 24(8)